Activity是用户与设备交互的界面。
1 Activity的4种状态
running/paused/stoped/killed
Running(运行):
Activity处于活动状态,此时Activity处于栈顶,是可见状态,可与用户进行交互。
Paused(暂停)
当Activity失去焦点,或被一个新的非全屏的Activity,或被一个透明的Activity放置在栈顶时,Activity会转化为Paused状态,此时的Activity只是失去了与用户交互的能力,其所有的状态信息及其成员变量都还存在,只有在系统内存紧张的情况下,才有可能被系统回收掉。
Stopped(停止)
当一个Activity被另一个Activity完全覆盖时,被覆盖的Activity就会进去Stopped状态,此时它不再可见,但是跟Paused状态一样保持着其所有状态信息及其成员变量。
Killed(销毁)
当Activity被系统回收掉时,Activity就处于Killed状态。
2 Activity生命周期分析
Activity启动 -> onCreate() -> onStart() -> onResume().
点击Home键回到主界面(Activity不可见) -> onPause() -> onStop()
当我们再次回到原Activity时 -> onRestart() -> onStart() -> onResume()
退出当前Activity时 -> onPaused() -> onStop() -> onDestroy()
3 Android进程优先级
前台/可见/服务/后台/空
前台进程
指正在与用户进行交互的应用进程,该进程数量较少,是最高优先级进程,系统一般不会终止该进程,而判断为前台进程的因素有以下这些
进程中包含处于前台的正与用户交互的activity;
进程中包含与前台activity绑定的service;
进程中包含调用了startForeground()方法的service;
进程中包含正在执行onCreate(), onStart(), 或onDestroy()方法的service;
进程中包含正在执行onReceive()方法的BroadcastReceiver.
可视进程
能被用户看到,但不能根据根据用户的动作做出相应的反馈,
因素
进程中包含可见但不处于前台进程的activity(如:弹出对话窗时activity处于可见状态,但并不处于前台进程中)
该进程有一个与可见/前台的activity绑定数据的service
服务进程
没有可见界面仍在不断的执行任务的进程,除非在可视进程和前台进程紧缺资源(如:内存资源)才会被终止 因素
包含除前台进程和可视进程的service外的service的进程
后台进程
通常系统中有大量的后台进程,终止后台进程不会影响用户体验,随时为优先级更高的进程腾出资源而被终止,优先回收长时间没用使用过的进程。 因素
包含不在前台或可视进程的activity的进程,也就是已经调用onStop()方法后的activity
空进程
为提高整体系统性能,系统会保存已经完成生命周期的应用程序 ,存在与内存当中,也就是缓存,为下次的启动更加迅速而设计。通常会被定期地终止