本篇文章給大家分享的是有關如何對Android中的進程進行?;?,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網站建設、網站重做改版、察哈爾右翼中旗網站定制設計、自適應品牌網站建設、H5響應式網站、商城網站定制開發(fā)、集團公司官網建設、成都外貿網站建設、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為察哈爾右翼中旗等各大城市提供網站開發(fā)制作服務。
?;钍侄?/strong>
當前業(yè)界的Android進程?;钍侄沃饕譃?黑、白、灰 三種,其大致的實現(xiàn)思路如下:
黑色?;睿翰煌腶pp進程,用廣播相互喚醒(包括利用系統(tǒng)提供的廣播進行喚醒)
白色?;睿簡忧芭_Service
灰色?;睿豪孟到y(tǒng)的漏洞啟動前臺Service
黑色?;?/strong>
所謂黑色?;睿褪抢貌煌腶pp進程使用廣播來進行相互喚醒。舉個3個比較常見的場景:
場景1:開機,網絡切換、拍照、拍視頻時候,利用系統(tǒng)產生的廣播喚醒app
場景2:接入第三方SDK也會喚醒相應的app進程,如微信sdk會喚醒微信,支付寶sdk會喚醒支付寶。由此發(fā)散開去,就會直接觸發(fā)了下面的 場景3
場景3:假如你手機里裝了支付寶、淘寶、天貓、UC等阿里系的app,那么你打開任意一個阿里系的app后,有可能就順便把其他阿里系的app給喚醒了。(只是拿阿里打個比方,其實BAT系都差不多)
沒錯,我們的Android手機就是一步一步的被上面這些場景給拖卡機的。
針對場景1,估計Google已經開始意識到這些問題,所以在最新的Android N取消了 ACTION_NEW_PICTURE(拍照),ACTION_NEW_VIDEO(拍視頻),CONNECTIVITY_ACTION(網絡切換)等三種廣播,無疑給了很多app沉重的打擊。我猜他們的心情是下面這樣的
而開機廣播的話,記得有一些定制ROM的廠商早已經將其去掉。
針對場景2和場景3,因為調用SDK喚醒app進程屬于正常行為,此處不討論。但是在借助LBE分析app之間的喚醒路徑的時候,發(fā)現(xiàn)了兩個問題:
1.很多推送SDK也存在喚醒app的功能
2.app之間的喚醒路徑真是多,且錯綜復雜
我把自己使用的手機測試結果給大家圍觀一下(我的手機是小米4C,刷了原生的Android5.1系統(tǒng),且已經獲得Root權限才能查看這些喚醒路徑)
15組相互喚醒路徑
接著我們來再來獲取三個進程的oom_adj
cat /proc/進程ID/oom_adj
上面是我把app切換到后臺,再進行一次oom_adj的檢驗,你會發(fā)現(xiàn)UI進程的值從0變成了6,而灰色?;畹腟ervice進程則從0變成了1。這里可以觀察到,app退到后臺時,其所有的進程優(yōu)先級都會降低。但是UI進程是降低最為明顯的,因為它占用的內存資源最多,系統(tǒng)內存不足的時候肯定優(yōu)先殺這些占用內存高的進程來騰出資源。所以,為了盡量避免后臺UI進程被殺,需要盡可能的釋放一些不用的資源,尤其是圖片、音視頻之類的。
從Android官方文檔中,我們也能看到優(yōu)先級從高到低列出了這些不同類型的進程:Foreground process、Visible process、Service process、Background process、Empty process。
以上就是如何對Android中的進程進行保活,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。