空进程 (Empty process):
不含任何活动应用组件的进程。保留这种进程的的唯一目的是用作缓存,以缩短下次在其中运行组件所需的启动时间。 为使总体系统资源在进程缓存和底层内核缓存之间保持平衡,系统往往会终止这些进程。
进程优先级:
首先空进程是最先被回收的,其次便是后台进程,依次往上,前台进程是最后才会被结束。
Android进程保活
有很多种方法可以实现Android的进程保活,比如通过 1像素且透明Activity提升App进程优先级、 通过设置前台Service提升App进程优先级、 Java层的双进程拉活、 JobScheduler实现、 NDK双进程守护、 使用账户同步拉活、 workmanager实现。
下面这幅图,说明的是:
-
红色部分是容易被回收的进程,属于android进程
-
绿色部分是较难被回收的进程,属于android进程
-
其他部分则不是android进程,也不会被系统回收,一般是ROM自带的app和服务才能拥有
本篇文章介绍的是进程第二种方式:
- 设置前台Service,提升App进程优先级
设置前台Service,提升App进程优先级:
首先创建ForegroundService.java继承自Service(android.app.Service):↓
这里要注意,不同的Android版本,所用的方式也就不同,并且不能显示通知栏,这里需要在onStartCommand中判断Android版本,选择不同的操作
public class ForegroundService extends Service {
private static final int SERVICE_ID = 1;
@Override
public void onCreate() {
super.onCreate();
Log.d(“ForegroundServiceNew”, “开启ForegroundService”);
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(“ForegroundServiceNew”, “销毁ForegroundService