android service常駐記憶體的一點思考

來源:互聯網
上載者:User

標籤:

我們總是不想自己的Android service被系統清理,以前時候大家最常用的辦法就是在JNI裡面fork出子進程,然後監視 service進程狀態,被系統殺死了就重啟它.我分別在android4.3和android5.0上面測試了LBE的清理記憶體功能,看看是不是會達到不被清理的目的,發現在這兩個版本上還是有一些區別的先說一下我們的代碼,我們的service在單獨的進程中,在service中調用JNI的代碼,然後fork出一個進程,然後讓我們的service進程和fork出來的子進程一直運行.看清理之後的狀態
  1. android4.4上面,JNI fork出來的進程沒有被殺死,可以把被殺死的service進程重啟
  2. android5.0上面還有效麼?清理記憶體操作之後,可以看到fork出來的進程也會被殺死..看來這種方法已經失效了..
為什麼5.0上面就不行了呢,咱們看一下activitymanagerservice,LBE的清理記憶體應該調用的killBackgroundProcesses,看看他們有什麼區別5.0的代碼
                Process.killProcessQuiet(app.pid);                Process.killProcessGroup(app.info.uid, app.pid);
4.3的代碼
                 Process.killProcessQuiet(pid);
5.0的代碼增加了killprocessgroup..看來fork進程的方式來讓android服務常駐記憶體的方式在5.0上面不管用了…

android service常駐記憶體的一點思考

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.