android開發:保持程序不被殺死類似微信QQ那種
阿新 • • 發佈:2019-02-05
從網路上整理的資料,不是個人見解,後續如果有新的發現,我會繼續追蹤。
1Service設定成START_STICKY,kill 後會被重啟(等待5秒左右),重傳Intent,保持與重啟前一樣
2通過 startForeground將程序設定為前臺程序,做前臺服務,優先順序和前臺應用一個級別,除非在系統記憶體非常缺,否則此程序不會被 kill.
經本人測試,有些裝置上,會在通知欄一直顯示,這讓使用者有點糟心= =
3雙程序Service:讓2個程序互相保護,其中一個Service被清理後,另外沒被清理的程序可以立即重啟程序
4QQ黑科技:在應用退到後臺後,另起一個只有 1 畫素的頁面停留在桌面上,讓自己保持前臺狀態,保護自己不被後臺清理工具殺死
5在已經root的裝置下,修改相應的許可權檔案,將App偽裝成系統級的應用(Android4.0系列的一個漏洞,已經確認可行)
6Android系統中當前程序(Process)fork出來的子程序,被系統認為是兩個不同的程序。當父程序被殺死的時候,子程序仍然可以存活,並不受影響。鑑於目前提到的在Android-Service層做雙守護都會失敗,我們可以fork出c程序,多程序守護。死迴圈在那檢查是否還存在,具體的思路如下(Android5.0以下可行)
(1)用C編寫守護程序(即子程序),守護程序做的事情就是迴圈檢查目標程序是否存在,不存在則啟動它。
(2)在NDK環境中將1中編寫的C程式碼編譯打包成可執行檔案(BUILD_EXECUTABLE)。
(3)主程序啟動時將守護程序放入私有目錄下,賦予可執行許可權,啟動它即可。
7聯絡廠商,加入白名單