Ⅰ 怎樣使一個android應用不被殺死
要讓android應用不被殺死,可以開啟一個service,一直檢測是否關閉了應用,一旦關閉馬上重新啟動。
當然首先要保證service不被殺死,應當提升service的優先順序,設為前台運行。也可以開啟兩個service互相檢測,一旦其中一個被關閉,另一個 馬上重啟對方。可以保證其生命穩定。這種方法也不是都行的,有些系統仍然能殺死。
Ⅱ android後台服務保持,不被殺死
作者:閉關寫代碼
鏈接:https://www.hu.com/question/29826231/answer/71207109
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
強烈建議不要這么做,不僅僅從用戶角度考慮,作為Android開發者也有責任去維護Android的生態環境。現在很多Android開發工程師,主力機居然是iPhone而不是Android設備,感到相當悲哀。
從技術角度概括一下現在普遍的防殺方法
Service設置成START_STICKY,kill 後會被重啟(等待5秒左右),重傳Intent,保持與重啟前一樣
通過 startForeground將進程設置為前台進程,做前台服務,優先順序和前台應用一個級別,除非在系統內存非常缺,否則此進程不會被 kill
雙進程Service:讓2個進程互相保護,其中一個Service被清理後,另外沒被清理的進程可以立即重啟進程
QQ黑科技:在應用退到後台後,另起一個只有 1 像素的頁面停留在桌面上,讓自己保持前台狀態,保護自己不被後台清理工具殺死
在已經root的設備下,修改相應的許可權文件,將App偽裝成系統級的應用(Android4.0系列的一個漏洞,已經確認可行)
Android系統中當前進程(Process)fork出來的子進程,被系統認為是兩個不同的進程。當父進程被殺死的時候,子進程仍然可以存活,並不受影響。鑒於目前提到的在Android-Service層做雙守護都會失敗,我們可以fork出c進程,多進程守護。死循環在那檢查是否還存在,具體的思路如下(Android5.0以下可行)
用C編寫守護進程(即子進程),守護進程做的事情就是循環檢查目標進程是否存在,不存在則啟動它。
在NDK環境中將1中編寫的C代碼編譯打包成可執行文件(BUILD_EXECUTABLE)。
主進程啟動時將守護進程放入私有目錄下,賦予可執行許可權,啟動它即可。
聯系廠商,加入白名單
------------------------------------------------------
TIP: 面對各種流氓軟體後台常駐問題,建議使用「綠色守護」來解決,可是殺掉那些第三方清理工具難以清除的後台程序
Ⅲ 怎樣殺死android service進程
這個意外進程停止,出現的情況有兩種: 1.程序後台運行時,系統資源不足時自動殺死該進程從而獲取更多的資源,而用戶在進入該界面時,進程已被殺死而無法恢復前一狀態而引起的程序崩潰. 2.手機root後,用戶許可權擴大導致誤刪了系統個別文件導致的程序無法運行. 解決辦法: 1.種情況屬於系統內部的,無法干涉 2.從新刷機,刷機後進行反root,保證用戶沒有最高許可權而不能刪除系統文件,
Ⅳ android service :搜狗輸入法是如何能夠一直在後台運行而不被殺死
雖然我沒研究過搜狗輸入法的Service,但不想讓一個Service被幹掉,在它生命周期的onDestroy階段,再用Intent或PaddingIntent自啟動就好了吧。說白了就是——你打死我,我原地復活重來
雖然我不清楚你打算幹嘛,但沒必要(使用頻率不高)的話,讓Service在用戶手機里賴著不走占資源+耗電純屬損人不利自己。只要用戶有點手機知識,很容易就能在手機後台中看到你的Service與總運行時間,當他(她)發先這個Service一直在後台運行而且還不能結束時,我估計他(她)對你這個應用恐怕不會有什麼好印象
如果你的Service用的不頻繁,只是每隔段時間要定期或不定期在後台做一些短時間的操作,建議還是用IntentService+AlarmManager+PaddingIntent,IntentService執行完任務會自己關閉,AlarmManager+PaddingIntent用來定期喚醒cup啟動IntentService。
這樣的話Service只在執行任務時啟動,執行完就不留痕經的消失,90%以上的時間你在後台都看不到它。就是說只在必要時來你家,而不是不管有事沒事都賴在你家不走。這么一來比較不會招人煩……