• 360等杀掉了app的主进程后 ,如何自动开启 如何防止被kill


    如何阻止360等进程查杀工具停止App后台进程
    安全软件优化内存时需要关闭没用的进程
    既然你同意使用360,,也允许了360的最高权限。。那么他就有足够的权限来杀掉app后台进程。

    一 如何保证app进程不被杀掉(可以研究一下 守护进程 和 AIDL )


    1 如果将服务放在系统主进程中就应该不会被杀掉?system/app
    2 守护进程
    相互监听,如果有一方被kill掉,另一个捕获到立即启动,以达到service永远都在运行的状态
    例如:微信是同时开启了两个进程和服务


    拥有service的进程具有较高的优先级
    官方文档告诉我们,Android系统会尽量保持拥有service的进程运行,只要在该service已经被启动(start)或者客户端连
    接(bindService)到它。当内存不足时,需要保持,拥有service的进程具有较高的优先级。

    3 onDestroy方法里重启service
    service +broadcast 方式,就是当service走ondestory的时候,发送一个自定义的广播,当收到广播的时候,重新启
    动service;

    二 保持service存活的方法?
    1 onStartCommand方法,返回START_STICKY---------------
    StartCommond几个常量参数简介:
    1、START_STICKY
    在运行onStartCommand后service进程被kill后,那将保留在开始状态,但是不保留那些传入的intent。不久后service就
    会再次尝试重新创建,因为保留在开始状态,在创建 service后将保证调用onstartCommand。如果没有传递任何开始
    命令给service,那将获取到null的intent。
    【结论】 手动返回START_STICKY,亲测当service因内存不足被kill,当内存又有的时候,service又被重新创建,比较
    不错,但是不能保证任何情况下都被重建,比如进程被干掉了


    2 提升service优先级

    在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = "1000"这个属性设置最高优先级,1000
    是最高值,如果数字越小则优先级越低,同时适用于广播。
    【结论】目前看来,priority这个属性貌似只适用于broadcast,对于Service来说可能无效


    3 提升service进程优先级
    Android中的进程是托管的,当系统进程空间紧张的时候,会依照优先级自动进行进程的回收
    当service运行在低内存的环境时,将会kill掉一些存在的进程。因此进程的优先级将会很重要,可以使用
    startForeground 将service放到前台状态。这样在低内存时被kill的几率会低一些。

    4 Application加上Persistent属性
    看Android的文档知道,当进程长期不活动,或系统需要资源时,会自动清理门户,杀死一些Service,和不可见的
    Activity等所在的进程。但是如果某个进程不想被杀死(如数据缓存进程,或状态监控进程,或远程服务进程)

    5 监听系统广播判断Service状态
    通过系统的一些广播,比如:手机重启、界面唤醒、应用状态改变等等监听并捕获到,然后判断我们的Service是否还存
    活,别忘记加权限啊。


    6 将APK安装到/system/app,变身系统级应用
    需要系统root过

    相关url:http://blog.csdn.net/mad1989/article/details/22492519

  • 相关阅读:
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    每日总结
    团队博客
    团队博客
  • 原文地址:https://www.cnblogs.com/softwarelanguagebs/p/4716988.html
Copyright © 2020-2023  润新知