Android的進程與線程(1)

來源:互聯網
上載者:User

當程式的一個組件啟動的時候,如果這時程式中沒有其他組件正在啟動並執行話,Android系統將會為這個程式啟動一個進程和一個線程。預設情況下,同一個程式中的所有組件運行在相同的進程和線程中(該線程被稱為main線程)。如果當一個程式的組件啟動的時候,該程式已經有一個進程的話(這種情況可能是因為程式的其他的某個組件已經運行了),程式的該組件就會在這個已經存在的進程中被啟動,並且運行在同一個線程(即main線程)中。當然,你也可以讓同一程式中的不同組件分別運行在不同的進程中,並且你可以為這些進程分別建立各自的線程。

本篇教程將主要介紹在Android程式中的進程和線程具體是怎樣工作的。

進程

預設情況下,同一個程式的所有組件運行在同一個進程中,對於大多數的程式來說,這一點最好是不要改變的。然而,如果你發現你需要控制某個組件運行於特定進程的話,你可以在manifest檔案中通過android:process屬性來設定。

在manifest檔案中,<activity><service><receiver><provider>這四種組件標籤都支援android:process屬性,這個android:process屬性就是用來決定這四種組件應該運行在哪個進程中的。你可以通過設定這個屬性來讓每個組件運行在自己的進程中,或者讓一些組件運行在同一個進程中其他的運行在另外的進程中。你甚至可以通過設定android:process來讓不同程式的組件運行在同一個進程中,當然這有個前提就是這些不同程式應該有相同的Linux使用者ID並且簽訂了同一認證(sign with the same cerificates)。

在manifest中的<application>標籤中,也可以設定android:process屬性,這樣的話就會讓程式中的所有組件都運行在同一進程中。

當Android裝置記憶體資源很少,而當前與使用者互動的進程又需要更多的記憶體資源的時候,Android系統可能就會殺死一些進程。運行在被殺死進程中的程式組件也就同時被銷毀了。當使用者再次用到這些組件的時候,系統就會這些組件再啟動新的進程。

當系統資源緊張,系統決定要殺死某些進程的時候,是根據這些進程與使用者的相關性來判斷的。比如說,與可見activities所在的進程相比,系統更容易殺死那些不可見activities所在的進程。所以說來,系統決定殺死哪個進程的時候,主要是根據進程中啟動並執行組件的狀態來判斷的。關於這一點,下篇將進一步討論。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.