Android面试资料库
1. 安卓面试之Service
- 知道Service吗,它有几种启动方式? —— goeasyway
- Android Service完全解析,关于服务你所需知道的一切 —— Alpuff
- Android中IntentService详解 —— 博客园精华区
重点:
(1) startService和bindService各自的生命周期
(2) 项目中的每一个Service都必须在AndroidManifest.xml中注册才行
(3) Service的onCreate是在主线程(ActivityThread)中调用的,耗时操作会阻塞UI
(4) 用远程Service和IntentService执行耗时操作
(5) IntentService中的onHandleIntent能接收Activity启动服务时传递的参数并执行相应动作
2. 安卓面试之BroadcastReceiver
- 用广播来更新UI界面好吗?—— goeasyway
- BroadcastReceiver应用详解 —— liuhe688
- sendBroadcast和sendStickyBroadcast的区别 —— 一根骨头棒子*熬的汤
重点:
(1) 静态注册与动态注册的区别
(2) 有序广播与无序广播的区别
(3) 当它的onReceive方法执行完成后,它的生命周期就结束了。如果在onReceive去开线程进行异步操作或者打开Dialog都有可能在没达到你要的结果时进程就被系统杀掉。替代的方案是用Notificaiton或者Service(startService)
(4) sendStickyBroadcast发出的最后一个Intent会被保留,下次当Recevier处于活跃的 时候,又会接收到它
3. 安卓面试之Activity
重点:
onPause较容易被触发,所以我们在做BroadcastReceiver注销时放在onStop要好些;但在保存数据时,放在onPause去做可以保证数据存储的有效性,如果放在onStop去做,在某些情况下Activity走完onPause后有可能还没顺利走到onStop就被系统回收了
4. 安卓面试之ContentProvider
重点:
ContentProvider向我们提供了我们在应用程序之前共享数据的一种机制
5. 安卓面试之开发模式
重点:
作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。
6. 安卓面试之对象序列化
重点:
两种都是用于支持序列化、反序列化话操作,两者最大的区别在于存储媒介的不同,Serializable使用IO读写存储在硬盘上,而Parcelable是直接在内存中读写,很明显内存的读写速度通常大于IO读写,所以在Android中通常优先选择Parcelable。
在内存间数据传输时推荐使用Parcelable,而Serializable可将数据持久化方便保存,所以在需要保存或网络传输数据时选择Serializable,因为android不同版本Parcelable可能不同,所以不推荐使用Parcelable进行数据持久化