詳解 Android Activity 生命週期

來源:互聯網
上載者:User

標籤:

  從以下幾個方面詳細說一下Activity的生命週期:

  1.回到主畫面再開啟和退出程式的時候

  2.旋轉螢幕的時候。

  3.開啟其它的Activity的情況。

  4.開啟一個Layou透明的Activity的情況。

  原始碼:MyApplication.7z

  先來一張Activity的生命週期圖鎮樓。

  

  建立一個工程,實現的生命週期的所有方法,只是在方法裡添加一個列印輸出,讓我們能清楚的看到

當前Activity執行的生命週期回調方法。

    @Override    protected void onStart() {        System.out.println("onStart");        super.onStart();    }    @Override    protected void onResume() {        System.out.println("onResume");        super.onResume();    }    @Override    protected void onPause() {        System.out.println("onPause");        super.onPause();    }    @Override    protected void onStop() {        System.out.println("onStop");        super.onStop();    }    @Override    protected void onRestart() {        System.out.println("onRestart");        super.onRestart();    }    @Override    protected void onDestroy() {        System.out.println("onDestroy");        super.onDestroy();    }

 

當我們第一次運行我們的程式,app進入首頁面,看一下logcat的輸出:執行了onCreate、onStart、onResume方法。

 

1.返回到主畫面的時候。

  我們按一下Home鍵返回到主畫面,看一下它的執行的動作。

  執行了onPause和onStop方法。點擊我們的app,進入主程式發現它執行了onRestart、onStart和onResume。

我們第一次運行app的時候是沒有執行onRestart方法的。和我們看官方的文檔一至,在Activity被停止後再次啟用的時候

才會被調用。

Called after your activity has been stopped, prior to it being started again. Always followed by onStart()

 

我們點擊關閉app看一下它會回調哪些生命週期函數。

  這時它會執行onStop和onDestory方法。至此我們走完了一個最簡單的生命週期流程。

 

2.旋轉螢幕的時候。

   運行我們的應用程式,和第一次開啟一樣調用create,start.和resume

  接下來我們旋轉一下螢幕看一下會發生什麼。

  一下子。調用了好多。它是先把Activity關閉掉,再重新new一個activity。這裡就要注意了,如果我們的程式

需要支援旋轉螢幕,那我這就要調用onSaveInstanceState()方法來儲存當前的資料狀態,在onCreate方法裡恢複

這些狀態的值。

3.開啟一個其它的Activity.

  修改一個我們的程式,在首頁面加一個按鈕,再加一個Activity。

    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="New Button"        android:id="@+id/button"        android:layout_below="@+id/textView"        android:layout_centerHorizontal="true"        />

  點擊按鈕的時候開啟我們新添加的Activity

        final Button btn = (Button) findViewById(R.id.button);        btn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent(MainActivity.this, MessageTip.class);                startActivity(intent);            }        });

 

  運行我們的App.還是和之前一樣調用 onCreate(),onStart() 和onResume.

  然後在首頁面上按一下我們的按鈕,開啟另一個Activity.

  按返回鍵看一下。

  它會調用onRestart(),onStart(),onResume。這樣和我們講的方法1.進入主畫面再返回是一樣的。

4.開啟透明的Activity.

  透明的Activity我們做一個簡單的,直接在AndroidManifest.xml裡添加一個行代碼

  

  再運行我們的app.調用那三個方法。

  點擊首頁上的按鈕開啟透明的Activity.看一下調用了哪些函數。

  只調用了onPause。點擊返回

調用了onResume()方法。

發現沒開啟透明的Activity,原Acitvity沒有調用onStop()方法,關閉透明的Activity。原Activity沒有調用onRestart()

和onStart()方法。

 ok就到這裡,activity的生命週期非常重要!activity的生命週期非常重要!activity的生命週期非常重要!

重要的事情說三遍!!

原始碼:MyApplication.7z

詳解 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.