Android應用開發 第四講:Activity入門指南

來源:互聯網
上載者:User

本節內容
理解Activity
Activity的生命週期
執行個體:觀察翻轉螢幕導致的Activity狀態變化

點此下載:lesson4.zip

一、理解Activity

Activity是Android程式的4大組件之一。
Activity是Android程式的展示層。程式的每一個顯示螢幕就是一個Activity。
學過WEB開發的同學,可以把Activity理解成網頁中的一個JSP檔案;或者你可以把它理解成一個Windows的視窗。

下面看一下Activity類的繼承關係:


從這裡可以看到Activity是Context類的子類,大家對此先有個印象。

二、理解Activity的生命週期

手機最重要也是最基礎的功能是打電話,也就意味著電話來的時候可能隨時要把現在的程式暫停,如果電量不足的時候也可能隨時要把現有程式關閉;因此Android程式和電腦上的程式有所不同,具體到Activity,Activity的生命週期不是自身控制的,而是由Android系統控制的。

在android中Activity有四種基本狀態:
1、Running
位於螢幕最前端時,此時處於可見狀態,和使用者可互動的狀態。
2、Paused
當Acitivy被另一個透明的或者非全屏的Activity覆蓋時的狀態叫Paused狀態,雖然可見但不可互動。
3、Stop
當Activity被另外一個Activity覆蓋、介面不可見時處於Stop狀態。
4、Killed
Activity被系統殺死或者跟本沒啟動時就是Killed狀態。

我們下面看一下Activity的生命週期:


下面是的簡單翻譯版本:

Activity棧:
Android通過Activity棧的方式來管理Activity。

正在啟動並執行Activity 處在在棧的最頂端,它是運行狀態的;

當有新Activity進入螢幕最上端時,原來的Activity就會被壓入第二層,如果他的螢幕沒有被完全遮蓋,那麼他處於Pause狀態,如果他被遮蓋那麼他處於Stop狀態。

當然不管你出於任何一層,都可能在系統覺得資源不足時被強行關閉,當然關閉時在棧底的程式最先被關閉。

譬如:當你在程式中調用 Activity.finish()方法時,結果和使用者按下 BACK 鍵一樣:他告訴 Activity Manager該Activity執行個體可以被“回收”。隨後 Activity Manager 啟用處於棧第二層的 Activity 並重新入棧,把原 Activity 壓入到棧的第二層,從 Running 狀態轉到 Paused 狀態。

三.執行個體:觀察翻轉螢幕導致的Activity狀態變化

Activity類中定義了和生命週期相關的一些方法,這些方法會在狀態改變時被調用,譬如建立時調用的方法onCreate()。因此我們可以寫一個程式,在程式的每個一個方法中寫注釋,然後看看運行時注釋的列印順序來跟蹤Activity的狀態變化。

下面是程式碼:

  1. package android.basic.lesson4;import android.app.Activity;
  2. import android.os.Bundle;
  3. import android.util.Log;public class MainActivityLife extends Activity {
  4. String tag =”[MainActivityLife]“;
  5. /** Called when the activity is first created. */
  6. @Override
  7. public void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.main);
  10. Log.i(tag, “onCreate”);
  11. }@Override
  12. public void onStart(){
  13. super.onStart();
  14. Log.i(tag, “onStart”);
  15. }@Override
  16. public void onPause(){
  17. super.onPause();
  18. Log.i(tag, “onPause”);
  19. }@Override
  20. public void onResume(){
  21. super.onResume();
  22. Log.i(tag, “onResume”);
  23. }@Override
  24. public void onStop(){
  25. super.onStop();
  26. Log.i(tag, “onStop”);
  27. }@Override
  28. public void onDestroy(){
  29. super.onDestroy();
  30. Log.i(tag, “onDestroy”);
  31. }
  32. }

複製代碼

然後調出LogCat工具,來觀察程式的運行細節。通過LogCat的過濾器我們可以看到程式啟動、螢幕翻轉、按後退鍵程式退出的過程,這有助於我們驗證剛才所學的知識。



我們可以看到螢幕翻轉時,Android系統把ActivityLife這個Activity先殺死(具體順序是先暫停、後關閉再銷毀),然後再啟動(具體順序是先建立,後啟動再恢複)。通過這個例子我們也清楚的看到了,是Android系統而不是程式員在控制Activity的生命週期。

本節課就到這裡。

相關文章

聯繫我們

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