1.四大组件是什么与它们的生命周期(及Fragment)。
Activity,Service,BroadCastReceiver,ContentProvider
Activity:
Service:
BroadCastRecerver: 生命周期只有十秒左右 。每次广播到来时 , 会重新创建 BroadcastReceiver 对象 , 并且调用 onReceive() 方法 , 执行完以后 , 该对象即被销毁 . 当 onReceive() 方法在 10 秒内没有执行完毕,会弹出 ANR。
更多及参考:BroadcastReceiver生命周期探讨
Android四大组件:BroadcastReceiver史上最全面解析
Android 进阶11:进程通信之 ContentProvider 内容提供者
2.Acitivty的四种启动模式与特点。
standard:默认的启动模式,用该模式启动Activity会在当前任务栈中新建一个Activity实例并压入栈中。
singleTop:栈顶复用模式,如果要启动的Activity已在任务栈顶端,则不会新建实例,会回调该Activity的onNewIntent()方法。
singleTask:栈内复用模式,对于指定的任务栈,如果已经存在该Activity的实例,则不会创建新的实例,并将该Activity顶上的Activity全部出栈,回调该Activity的onNewIntent()方法,如果不存在则和STANDARD一样。如果指定的任务栈不存在,创建任务栈并加入栈中。任务栈通过taskAffinity属性指定。
singleInstance:全局唯一模式,整个系统只有一个实例,独占一个新的栈,当已存在实例时,启动它会把它的任务栈调度到前台。
详细:彻底弄懂Activity四大启动模式
3.Activity状态保存与恢复。
(1)当Activity被异常终止,系统会调用onSaveInstanceState来保存当前Activity的状态。当Activity被重新创建后,系统会调用onRestoreInstanceState,并把Activity销毁时onSaveInstanceState方法所保存的Bundle对象作为参数同时传给onRestoreInstanceState和onCreate方法。
(2)同时,在onSaveInstanceState和onRestoreInstanceState方法中,系统会默认为我们保存和恢复视图结构,所有设置有id的View都将得到保存和恢复。
(3)onSaveInstanceState在onStop之前调用,即可能发生在onPause之前,也可能在onPause之后。onRestoreInstanceState在onStart和onResume之间调用。
详细参考:Activity 知识梳理(3) - Activity状态保存和恢复
4.Service的生命周期,启动方法,有什么区别。
两种启动方法下的生命周期:
startService():onCreate() ——> onStartCommand() ,stopSelf() or stopService():onDestroy()
bindService():onCreate() ——> onBind(), unbindService() or Activity销毁:onUnbind() ——> onDestroy()
解释:onCreate()在Service的生命周期中只调用一次,多次startService和bindService不会再回调onCrate()。源码中还有onStart()方法,但注解表示已过时,使用onStartConmand代替。
区别:
startService
一旦服务开启跟调用者(开启者)就没有任何关系了。开启者退出了,服务还在后台长期的运行。
开启者不能调用服务里面的方法。
bindService
bind的方式开启服务,绑定服务,调用者挂了,服务也会跟着挂掉。
绑定者可以调用服务里面的方法。
参考:Android 服务两种启动方式的区别
Service 生命周期
5.service和activity怎么进行数据交互。(跨进程通信方式)
1.文件共享
2.用广播交互
3.Messenger
4.AIDL