如何阻止360等進程查殺工具中止App後臺進程
安全軟件優化內存時須要關閉沒用的進程
既然你贊成使用360,,也容許了360的最高權限。。那麼他就有足夠的權限來殺掉app後臺進程。android
一 如何保證app進程不被殺掉(能夠研究一下 守護進程 和 AIDL )緩存
1 若是將服務放在系統主進程中就應該不會被殺掉?system/app
2 守護進程
相互監聽,若是有一方被kill掉,另外一個捕獲到當即啓動,以達到service永遠都在運行的狀態
例如:微信是同時開啓了兩個進程和服務安全
擁有service的進程具備較高的優先級
官方文檔告訴咱們,Android系統會盡可能保持擁有service的進程運行,只要在該service已經被啓動(start)或者客戶端連
接(bindService)到它。當內存不足時,須要保持,擁有service的進程具備較高的優先級。微信
3 onDestroy方法裏重啓service
service +broadcast 方式,就是當service走ondestory的時候,發送一個自定義的廣播,當收到廣播的時候,從新啓
動service;app
二 保持service存活的方法?
1 onStartCommand方法,返回START_STICKY---------------
StartCommond幾個常量參數簡介:
一、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來講可能無效url
3 提高service進程優先級
Android中的進程是託管的,當系統進程空間緊張的時候,會依照優先級自動進行進程的回收
當service運行在低內存的環境時,將會kill掉一些存在的進程。所以進程的優先級將會很重要,可使用
startForeground 將service放到前臺狀態。這樣在低內存時被kill的概率會低一些。.net
4 Application加上Persistent屬性
看Android的文檔知道,當進程長期不活動,或系統須要資源時,會自動清理門戶,殺死一些Service,和不可見的
Activity等所在的進程。可是若是某個進程不想被殺死(如數據緩存進程,或狀態監控進程,或遠程服務進程)xml
5 監聽系統廣播判斷Service狀態
經過系統的一些廣播,好比:手機重啓、界面喚醒、應用狀態改變等等監聽並捕獲到,而後判斷咱們的Service是否還存
活,別忘記加權限啊。
6 將APK安裝到/system/app,變身系統級應用
須要系統root過
相關url:http://blog.csdn.net/mad1989/article/details/22492519