安卓进程的生命周期
在安卓中,一共分为五种状态的进程:分别为activityprocess,visibleprocess,backgroundprocess,startedserviceprogress,backgroundprocess,emptyprocess,这五种状态,他们的优先等级由上至下:
一、这里的ActiveProcess这个进程状态的进程此时正处于活跃的状态,用户可以和它进行交互,可以说,此时进程正在运行,而且可以收到来自外界的消息。
二、VisibleProcess,这个进程是可见的进程,但此时的进程已经失去了与用户之间的交互的能力,也就是说大概是这种情况,当有一个弹出框出现在当前的窗台上,我们此时无法正常点击后边的窗体里的控件,但是我们又能明显的看到后边的窗体,这个时候进程就处于这个状态。
三、StartServiceProcess这个进程根据意思翻译过来就是开启Service服务进程,我们都知道Service进程我们是看不到的,但他确实在运行,这种进程的状态就是这样的,比刚才的VisibleProcess相比,他又失去了界面。
四、BackgroundProcess这个进程称之为后台进程,他和StartServiceProcess的区别在于有没有服务,对于background这个后台进程来说,已经没有了服务,而startServiceProcess这个进程是有服务的,差在了这里。
五、最后一个emptyProcess,这个就变成了空进程,空进程就更加悲哀了,他不但没有了服务。可以说他就剩下一台虚拟机了,对于安卓每个程序来说,这是标配,他就剩下这层了,当然他在等待有人再来召唤,这样他就可以以很快的速度恢复过来。
以下是状态转换的过程:
这个是金字塔形的生命周期:
视频里还介绍了当有人按下home键或者返回键后进程的情况,结果显示,两次的进程都没有被销毁,哪怕是调用finish函数,依旧没有销毁进程,当然根据安卓虚拟机的垃圾回收机制,如果赶上当前资源匮乏,可能就要牺牲这个进程,因为当前来说,这个进程是优先级最低的,想要彻底销毁掉进程,有两个办法:
一、System.exit(0);
二、Process.killProcess(PID);
这种人为关闭和系统资源匮乏关闭进程的效果来后边会有一些不同:如果activity是自己销毁的,实例就永远消失了,但是如果系统因为资源限制销毁了activity,虽然这个实例已经不在了,但是当用户返回到它时,系统会利用这个activity被销毁时存储的数据,重新创建一个实例。
这句话是我在别人的博客里看到的,感觉很重要,同时我还看到: