Android进程优先级

2018-12-14  本文已影响0人  王魔王

5、空进程
该进程中没有任何活动的android四大组件,即可认为是一个空进程。
空进程优先级最低,最容易被系统回收。

4、后台进程
该进程有一个不可见的activity(该activiy的onstop()方法被调用)

3、服务进程
一个进程正在运行一个通过startService()启动的进程。
该级别的进程已经很难被杀死。如果因为内存不够而导致该进程被系统回收,
那么当内存充足的时候,服务进程会被自动重启。空进程和后台进程被系统杀死
后是不会被重启的。

2、可见进程

该进程持有一个非前台Activity,但这个Activity依然能被用户看到(也就是这个Activity调用了onPause()方法)。例如,当一个activity启动了一个对话框,这个activity就被对话框挡在后面。
该进程持有一个与可见(或者前台)Activity绑定的Service。

1、前台进程
该进程持有一个用户正在与其交互的Activity(也就是这个activity的生命周期方法走到了onResume()方法)。
该进程持有一个Service,并且这个Service与一个用户正在交互中的Activity进行绑定。
该进程持有一个前台运行模式的Service(也就是这个Service调用了startForegroud()方法)。
该进程持有一个正在执行生命周期方法(onCreate()、onStart()、onDestroy()等)的Service。
该进程持有一个正在执行onReceive()方法的BroadcastReceiver。

一般情况下,不会有太多的前台进程。杀死前台进程是操作系统最后无可奈何的做法。当内存严重不足的时候,前台进程一样会被杀死。

如果一个进程同时满足上述5种优先级中的多个等级条件,android系统会优先选取其中最高的等级作为该进程的优先级。例如,一个进程持有一个Service(服务进程等级)和一个前台Activity(前台进程等级),那么操作系统会将这个进程标记为前台进程。

另外需要注意的是,如果一个进程为另外一个进程提供服务,那么这个进程的优先级不会低于享受服务的进程。例如,假设进程A中的content provider为进程B提供服务,或者进程A中有一个Service与进程B中的组件进程绑定,那么进程A的优先级至少要与进程B一致,或者高于进程B。

上一篇下一篇

猜你喜欢

热点阅读