本节学习进程的生命周期:
Android系统是尽可能的去保护每一个进程,但是最终需要为新的进程,或者很重要的进程释放以前的老进程。为了决定那个进程被保护,那个被杀死。Android系统根据当前进程中组件的状态,以及运行在进行中的组件决定保留那个,杀死那个进程。当然了系统资源短缺时,进程等级低的先杀死,以此类推。
android系统中有五种进程等级:
1: 前台进程(前台进程有五种状态,只有其中一种满足就是前台进程,前台进程是很难被杀死的)
a:拥有一个正在与用户交互的Activity(此时Activity的OnResume方法被调用)的进程
b:拥有一个服务,此服务绑定一个与用户正在交互的Activity
c:拥有一个“正在运行于前台”的服务,也就是服务的startForeground被调用
d:拥有一个服务,此服务正在执行服务生命周期函数中的一个(onCreate(), onStart(), or onDestroy())
e:拥有一个广播接受者,此广播接受者正在执行onReceiver方法
2:可见进程(可见进程有两种状态,只要其中一种满足就是前台进程)
a:拥有一个Activity,但是此Activity不在前台,但是用户能看到此Activity的进程(Activity的onPause方法调用)
b:拥有一个服务,此服务绑定了一个前台或者可见的Activity
3:服务进程
拥有一个通过StartServer启动的服务的进程
虽然服务用户是看不见的,但是服务进程却可以干一些很重要的事情(比如在后台播放音乐,下载东西),服务进程一般是不可能杀死的。除非系统资源不够,会杀死服务进程。但是当系统资源充足时,系统会自动启动被杀死的服务进程。
4:后台进程:
拥有一个用户看不见的Activity的进程,此时Activity的onStop方法被调用
5: 空进程:
没有任何活动的应用组件的进程
空进程很容易被杀死的。