安卓應用程式的生命週期

來源:互聯網
上載者:User

標籤:

(1)前台(Foreground)進程
與使用者當前正在做的事情密切相關,不同的應用程式組件能夠通過不同的方法使它的宿主進程移到前台。當下面任何一個條件滿足時,都可以考慮將進程移到前台。
進程正在螢幕的最前端運行一個與使用者互動的Activity(它的onResume()方法被調用);
進程有一個正在啟動並執行BroadcastReceiver(它的BroadcastReceiver.onReceive()方法正在執行);
進程有一個Service,並且在Service的某個方法(Service.onCreate()、Service.onStart()或者Service.onDestroy())內有正在執行的代碼。
(2)可見(Visible)進程
它有一個可以被使用者從螢幕上看到的Activity,但不在前台——其onPause()方法被調用。例如:如果前台的Activity是一個對話方塊,以前的Activity隱藏在對話方塊之後,就可能出現這種進程。這樣的進程很重要,一般不允許被殺死,除非為了保證前台進程的運行不得不這樣做。

(3)服務(Service)進程
有一個已經用startService() 方法啟動的Service,雖然這些進程使用者無法直接看到,但它們做的事情卻是使用者所關心的(例如:後台MP3回放或後台網路資料的上傳/下載)。因此,系統將一直運行這些進程,除非記憶體不足以維持所有的前台進程和可見進程。
(4)後台(Background)進程
擁有一個目前使用者看不到的Activity(它的onStop()方法被調用),這些進程對使用者體驗沒有直接的影響。如果它們正確執行了Activity生命週期,系統可以在任意時刻殺死進程來回收記憶體,並提供給前面3種類型的進程使用。系統中通常有很多這樣的進程在運行,因此要將這些進程儲存在LRU 列表中,以確保當記憶體不足時使用者最近看到的進程最後一個被殺死。
(5)空(Empty)進程
不包含任何處於活動狀態的應用程式組件。保留這種進程的唯一原因是,當下次應用程式的某個組件需要運行時,不需要重新建立進程,這樣可以提高啟動速度。
以上所說的“進程”是從系統啟動並執行角度考慮的,各種不同的進程可以理解成Android的各種組件的不同狀態機器(state machine)。如果從應用程式的代碼以及運行情況考慮,可以關注Android的各種組件相對應的生命週期。

安卓應用程式的生命週期

聯繫我們

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