必看Android 500道高薪面试题集 联系客服

发布时间 : 星期四 文章必看Android 500道高薪面试题集更新完毕开始阅读b71989bdbe23482fb5da4cad

\虚引用\顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收。虚引用主要用来跟踪对象被垃圾回收的活动。虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列(ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。程序可以通过判断引用队列中是否已经加入了虚引用,来了解被引用的对象是否将要被垃圾回收。程序如果发现某个虚引用已经被加入到引用队列,那么就可以在所引用的对象的内存被回收之前采取必要的行动。

160. 还有一个Service是建立在哪个线程上面 161. 接口都有哪些内容

162. 接口是否可继承接口

抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法

接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承具体类。抽象类中可以有静态的main方法。 备注:只要明白了接口和抽象类的本质和作用,这些问题都很好回答,你想想,如果你是java语言的设计者,你是否会提供这样的支持,如果不提供的话,有什么理由吗?如果你没有道理不提供,那答案就是肯定的了。

只有记住抽象类与普通类的唯一区别就是不能创建实例对象和允许有abstract方法。 163. 如何通过程序进行对服务器的接口调用,写出具体过程

164. 分页加载思路

165. 分页加载需要传递哪些参数 166. 讯飞语音在什么地方用到 167. 消息推送

168. LBS定位用到哪个地图?为什么要使用这个?实现了哪些功能 169. 地图中怎样获得附近的信息 170. 百度地图显示周边招聘信息 171. 移动互联使用了哪种方式 172. 集合方面的底层理解

173. 每个item都是不同的内容,怎么弄 174. 有没有自己写过NDK

175. 一个版本的app不更新,只是给他赠加或着减少一个功能,怎么弄 176. 架构的情况 177. 多线程的讲解 178. 线程的异常怎么处理 179. 请求网络用什么,http的使用 180. 解释intent和activity的区别 181. 如何处理内存溢出

182. 如何去除一个字符串首尾的空格 183. 如何把一个字符串转换成asll码 184. 得到一个数组中出现次数最多的数 185. 手机QQ聊天框冒泡效果怎么做

怎么使聊天时对方发的信息在左边,自己发的在右边

27

186. groupby是干什么的

187. 你android应用假如你手机设置了其他语言你的应用语言会变吗 188. 了解后台吗,对后台的认识 189. '学java'内存中占多少个字节

10个字节,12

190. Intent可以传递那些数据

基本数据类型,以及序列化的对象。

Serializable 、charsequence 、Parcelable 、Bundle

191. DDMS与TraceView的区别

DDMS是一个程序执行查看器,在里面可以看见线程和堆栈等信息,TraceView是程序性能分析器。

192. 横竖屏切换不设置属性会怎么样

重新执行Activity生命周期

193. 单例类在android中哪种更合适

例如工具类可以封装为单例,用户登录后保存用户信息也可以封装为单例。

194. 一串字符串编写程序翻转split() 195. json写实体类

196. 如果标题过长超出界面,请写出你的解决方法

跑马灯的效果和HorizontalScrollView

197. 开发android应用怎样减少耗电量

建立连接前按Wifi-3G-2G顺序检查网络不要保持2G/3G连接wifi可用时,尽量用push,不要用定时查询优化应用程序的设计和算法使用简单高效的数据使用gzip压缩数据流>树-节点层次结构Ex,protobuf>json>xml

198. 提供额外的两个int域和一个Object域 199. android开发过程有几种缓存方式,并说明缺点 200. Activity相关

ActivityA点击启动ActivityB,b里有一个geradviewgeradview里有一个textview倒计时,到0的时候关闭两个antivity

201. Bitemap内存溢出解决方法 202. 推送 203. 文件传输 204. 缓存app缓存 205. 边距测试 206. Java数据结构 207. 常用的分辨率

208. Ui一般有几套,是什么格式的,.9格式的还是什么格式的 209. onCreateView和onViewCreated之间的区别 210. 继承与组合的关系 211. IPC机制具体解释 212. aidl具体解释 213. 为什么要有NDK

214. 为什么json与js交互方便 215. 进程与线程的区别

28

216. 当一个activity退出之后在进程中会不会杀死 217. jvm的内存分配 218. MVC模式的理解

219. 排序有了解过吗?及其实现复杂度

220. android手机的密度,你如何对屏幕密度进行自适应 221. handler的理解

222. 对于instancevariable和localvarial,JVM在少女情怀内存时有什么区别

实例变量与本地变量在内存分配上的区别:实例变量在堆内存中,本地变量在栈中

223. Java线程都有哪些状态?列举你所知道的线程同步方法

新建状态(New) 就绪状态(Runnable) 运行状态(Running) 阻塞状态(Blocked) 死亡状态(Dead)

224. 如何避免比不加载图片混乱的问题 225. AysnTask最多可以开启几个线程 226. 数据库如何升级(添加字段什么的) 227. WebService 228. IntentService的用法

Android开发中IntentService的使用

分类:android笔记2011-11-0910:03960人阅读评论(0)收藏举报 androidservicethreadstringclassnullIntentService实现原理及内部代码 Android中除了Service还有一个IntentService,他们之间到底有哪些区别呢?在继承关系上而言IntentService是Service的子类,内部实现的代码中涉及到一些Android入门开发者不了解的Looper,Android123在早期的文章中已经说明他们的用法,这里不再赘述,有关原理大家可以看源码实现如下:

publicabstractclassIntentServiceextendsService{ privatevolatileLoopermServiceLooper;

privatevolatileServiceHandlermServiceHandler;//一个Handler封装了Looper对象 privateStringmName;

privatebooleanmRedelivery;

privatefinalclassServiceHandlerextendsHandler{ publicServiceHandler(Looperlooper){ super(looper); }

@Override

publicvoidhandleMessage(Messagemsg){ onHandleIntent((Intent)msg.obj); stopSelf(msg.arg1); } }

publicIntentService(Stringname){//构造方法,需要提供一个name作为标识 super();

mName=name;

29

}

对于下面的setIntentRedelivery的参数,如果为真时 onStartCommand(Intent,int,int)}willreturn

Service#START_REDELIVER_INTENT},soifthisprocessdiesbefore onHandleIntent(Intent)}returns,theprocesswillberestarted 如果为假时

onStartCommand(Intent,int,int)}willreturn

Service#START_NOT_STICKY},andiftheprocessdies publicvoidsetIntentRedelivery(booleanenabled){ mRedelivery=enabled; }

@Override

publicvoidonCreate(){//这里重写父类Service的创建,主要是构造一个线程 super.onCreate();

HandlerThreadthread=newHandlerThread(\thread.start();

mServiceLooper=thread.getLooper();

mServiceHandler=newServiceHandler(mServiceLooper); }

@Override

publicvoidonStart(Intentintent,intstartId){//Android2.0以前的Service启动参数控制 Messagemsg=mServiceHandler.obtainMessage(); msg.arg1=startId; msg.obj=intent;

mServiceHandler.sendMessage(msg); }

@Override

publicintonStartCommand(Intentintent,intflags,intstartId){//Android2.0以后的服务启动参数 onStart(intent,startId);

returnmRedelivery?START_REDELIVER_INTENT:START_NOT_STICKY; }

@Override

publicvoidonDestroy(){//服务摧毁的时候Looper一定要释放掉,这点很重要。 mServiceLooper.quit(); }

@Override

publicIBinderonBind(Intentintent){ returnnull; }

protectedabstractvoidonHandleIntent(Intentintent); }

从上面的代码相信大家可以看出IntentService和Service的不同了,通过Looper和Thread来解决标准Service中处理逻辑的阻塞问题,毕竟Android的Service也是会阻塞的。 关于使用

30