- Activity
1.Activity生命周期onCreate-onStart-onResume-onPause-onStop-onDestory
2.A启动B,先调用A的onPause,然后调用B的生命周期,B的onResume调用完成后,调用A的onStop,如果B是一个半透明的Activity,则A的onStop不会被调用
3.onSaveInstanceState会在onStop之前调用,不能保证在onPause之前调用,onRestoreInstanceState在onStart之后调用
4.SingleInstance:A是SingleInstace,那么A会在一个独立的任务栈中启动,A在启动B,B会在原来的任务栈中启动,不会在A的任务栈中
- Service
1.启动方式:bindService:启动方退出,service也会退出,startService:启动方退出,service不会退出,需要主动调用stopSelf停止自己,多次调用会在次调用onStart,不会重复调用onCreate
2.如何保证service不被杀死:
onStartCommand返回值改成START_STICKY,service被杀死后,会被重启,重传Intent,与之前一样
调用startForeground将service设置成前台状态,降低service被杀死的概率
在onDestory方法中重启service
3.IntentService:会在一个子线程中处理任务,任务处理完成后会自己销毁
- BroadCastReceiver
1.两种注册方式:
manifest文件中注册,应用程序推出以后,仍然可以接收广播
java代码动态注册,APP退出以后,不能接受广播
2.安全问题:
设置experted=false,不接收外部消息
自定义权限,注册广播时加入权限(自定义权限直接在manifest文件中使用permission节点即可)
发送消息时,加入package
使用LocalBroadCastManager
3.优先级:
优先级高的先接收消息,可以添加数据,也可以终止消息,有序广播通过sendOrderedBroadcase发送
无序广播调用sendBroadcast