現在有這樣的需求,防止自己的app被其他的應用程序(比如qq手機管家)殺死,該怎么實現呢。我們知道app都是運行在進程中的,android是怎樣管理這些進程的呢。要想app不被殺死,只要做到進程不被結束就解決了問題。但是不幸的是,第三方app很容易利用系統的api(比如killBackProgress())輕易殺死其他進程。那該怎么辦呢?
目前有這樣的解決方案。在本進程被其他應用程序殺死后,就立即重啟,這樣就可以間接防止進程被結束(其實已結束了,只重新開啟)。至今為止,還未知道怎樣完全防止第三方結束本進程,正在尋找中。。。。。。。。。。。。。
現在問題又來了,自己的應用怎么知道什么時候被殺死了,殺死之后又怎么重啟呢?答案是,無法知道,自己也無法重啟。幸好android提供了service,android規范中指出進駐有service的進程的優先級別很高,除非是本應用自己調用stopService結束服務,否則即使第三方應用殺死該進程,而后進程也會自己重啟(服務也重啟)
所以說,要想進程被殺死后能自動重啟,那么只需要在該進程中開啟某個服務就可以了。
補充:
1、通過 設定-》應用程序-》運行 結束某個進程或服務,這樣進程或服務不會重啟。
2、如果采用bindService()方法啟動服務,那么在 設定-》應用程序-》運行是看不到此項服務信息的。這樣的服務也可被”qq手機管家“永遠殺死,不在重啟。
結論:無法防止其他應用程序殺死自己進程或服務(系統自帶的服務管理外),但是可以在殺死后重啟。
另外,可以設置service屬性: