Android进程保活

如何降低oom_adj的值,以及如何使得我们应用占的内存最少。

1.省电管理中添加白名单

为该应用设置智能省电,而不是:后台运行10分钟关闭或者禁止后台运行等。

服务进程是没有界面的一直在后台工作的进程,优先级不高,当系统内存不足时会被杀死,再次充裕的时候会再次开启.

2.Service后台运行

 1.Service要运行在App主进程,不要单独设置进程Id。

 2.android:persistent="true" 属性使保活服务可以持久运行;服务的onStartCommand中return   START_REDELIVER_INTENT,注意服务不要调用stopself();

 < application ...

  android:persistent="true"   android:theme="@style/AppTheme">

 3.服务里使用WakeLock 让服务保持后台运行。

 PowerManager.WakeLock wakeLock;//休眠唤醒 让服务保持后台运行。不要滥用,不要到处都用,会导致耗电增加。

@Override

public void onCreate() {

    super.onCreate();

    if (getPackageManager().checkPermission("android.permission.WAKE_LOCK", getPackageName()) ==     PackageManager.PERMISSION_GRANTED) {

          PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);

          wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, QhTalkService.class.getName());

          wakeLock.acquire();

    }

}

@Override

public void onDestroy() {

    if (wakeLock !=null) {

        wakeLock.release();

    }

}

3.处理点击桌面Activity重启问题

android:alwaysRetainTaskState="true" 解决:最小化后点击桌面程序图标,重启进入MainActivity,而当前活动界面丢失的问题

 < android:name=".activities.MainActivity"

    android:exported="true"

    android:label="@string/app_name"

    android:alwaysRetainTaskState="true"

    android:theme="@style/AppTheme.NoActionBar">

你可能感兴趣的:(Android进程保活)