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">

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本篇文章是后台杀死系列的最后一篇,主要探讨一下进程的保活,Android本身设计的时候是非常善良的,它希望进程在不...
    看书的小蜗牛阅读 14,059评论 10 66
  • 版权声明:本文为LooperJing原创文章,转载请注明出处! 自己曾经也在这个问题上伤过脑经,前几日刚好有一个北...
    LooperJing阅读 29,872评论 98 481
  • 如何进行进程保活,首先我们应该先分析一下进程被杀死的原因开始 Android进程被杀死的场景分析: 从 Andro...
    如颖随行日记阅读 10,397评论 2 4
  • 自己曾经也在这个问题上伤过脑经,前几日刚好有一个北京的哥们在QQ说在做IM类的项目,问我进程保活如何处理比较恰当,...
    4e70992f13e7阅读 9,221评论 9 158
  • PDO(php data object) PDO为php访问数据库定义了一个轻量级的一致接口,只要某个数据库驱动实...
    小羊羊爱吃饭阅读 3,169评论 0 0

友情链接更多精彩内容