android中的进程优先级并怎么给进程设计优先级达到保活的效果

1.android中进程的优先级

前台进程(Foreground process):前台进程就是用户当前要处理的所有事情都必须要使用的进程。满足下面的各种情况则认为是前台进程。

进程持有一个正在和用户交互的 Activity。

进程持有一个 Service,这个 Service 处于这几种状态:1. Service 与用户正在交互的 Activity 绑定。 2. Service 是在前台运行的。 3. Service 正在执行它的生命周期 onCreate() onStrarCommand,onDestroy。 4. 进程持有一个 BroadcastReceiver 这个 BroadcastReceiver 正在执行它的 onReceiver 方法。
杀死前台进程需要用户交互,前台进程的优先级最高

可见进程(Visible process):如果一个进程不含任何前台的组件,但仍可被用户在屏幕上看到。当满足下面任意一条的时候,进程被认为是可见的。

进程持有一个 activity,这个 activity 不在前台。但是仍然可见的情况。

进程持有一个 Service ,这个 Service 与一个可见的 Activity 绑定。

可见的进程也被认为很重要,一般不会被销毁,除非是为了保证所有前台进程的运行而不得已不杀死可见进程的时候

服务进程(Service process):如果一个进程中运行着一个 Service,这个 Service 是通过 startService() 开启的,并且不属于上面两种较高优先级的情况下,这个进程就是一个服务进程。尽管服务进程没有和用户可以看到的东西绑定,但是它们一般在做的事情是用户关心的,比如后台播放音乐,后台下载数据等。所以系统会尽量维持它们的运行,除非系统内存不足以维持前台进程和可见进程的运行需要(这句话和没说一样)

后台进程(Background process):如果进程不属于上面三种情况,但是进程持有一个用户不可见的 activity (activity 的 onStop 被调用,但是 onDestroy 没有被调用的状态)就认为进程是一个后台进程。

后台进程不直接影响用户体验,系统会为了前台进程、可见进程、服务进程而任意杀死后台进程,通常情况下会有很多后台进程存在,他们会被保存在一个 LRU(least recently used)列表中,这样就可以确保用户最近使用的 Activity 最后被销毁,先销毁时间最远的 Activity。

空进程:如果一个进程不包含任何活跃的应用组件,则认为是空进程。例如:一个进程当中已经没有数据运行了,但是内存当中还为这个应用保留了一个进程空间。保存这种进程的唯一理由是为了缓存的需要,为了加快下次启动这个进程中组件的启动时间,这种空进程经常被杀死。

如何提高进程的优先级别
方法1.通常情况下会在程序Mannifest.xml中设置android:persistent=“true”

方法2. 提高进程优先级 startForeground(1, new Notification()); 降低进程优先级 stopForeground(true);
onStart() 方法中进行提高优先级操作 startForeground(1, new Notification(),然后在onStop()方法中进行降低优先级操作 stopForeground(true)这个方法可以将对应AP的ADJ临时提高到2。

方法3.
在需要提高优先级的地方调用:
final Intent it = new Intent();
it.setAction(“android.intent.action.BOOST_DOWNLOADING”);
it.putExtra(“package_name”, “com.android.contacts”);
it.putExtra(“enabled”, true);
context.sendBroadcast(it);
在需要恢复到正常优先级时调用:
final Intent it = new Intent();
it.setAction(“android.intent.action.BOOST_DOWNLOADING”);
it.putExtra(“package_name”, “com.android.contacts”);
it.putExtra(“enabled”, false);
context.sendBroadcast(it);
onStart() 方法中进行提高优先级操作,然后在onStop()方法中进行降低优先级操作
这个方法可以将对应AP的ADJ临时提高到7。

猜你喜欢

转载自blog.csdn.net/baidu_32015283/article/details/88051738