Activity的生命週期和啓動模式

Android開發最吸引人的魅力在於隨隨便便拖幾個控件,跑一下代碼,就能看見在頁面上面顯示的效果。其中Activity的強大就體現出來了。樓主之前作Web開發,被2000多行的Js代碼弄的頭昏眼花。後來偶爾一次機會,看見Android拖控件到顯示的視頻,被吸引着入了門,走上了Android的不歸路。作Android開發的這幾年,本着能抄代碼就不本身動手的精神,走了很多彎路。如今配合多個學習書籍,總結經驗,理解原理性的東西,方便下次抄襲(^_^)。html

廢話很少說,上Activity的生命週期圖(這個在面試的時候常常會被問到哎,真不知道有什麼能夠問的android

Activity的生命週期

圖片原地址(http://cs.szpt.edu.cn/android/guide/components/activities.html)面試

Activity從建立到銷燬,正常通過的生命流程就是onCreate->onStart->onResume->onPause->onStop->onStop->onDestroy。app

可是筒子們在開發的時候,偶會會見到不走尋常路的。ide

生命週期分析

onCreate:Activity正在被建立,是生命週期的第一個方法,通常初始化的工做都是在這裏完成的,好比setContentView加載layout、getIntent獲取上個頁面傳遞過來的數據、findViewById、setListener等學習

onRestart:Activity在重啓。通常狀況下當應用程序從後臺程序變成前臺程序的時候,會執行onRestart方法。測試

onStart:Activity正在啓動,Activity處在系統後臺可見,用戶還無法操做界面上的元素。ui

onResume:Activity可見了,而且出如今前臺。與onStart的區別在於:onStart的時候,Activity處在後臺,onResume的時候Activity才顯示到前臺。spa

onPause:Activity處在暫停狀態,用戶無法操做。code

onStop:Activity即將中止,能夠作微量的回收操做,但不可以太耗時。

onDestroy:Activity即將銷燬,能夠作回收工做和資源的釋放。通常把註冊的廣播接受者取消註冊unregisterReceiver、handler.removeMessages、Timer的cancel等。

測試代碼

package com.chunjiangchao.demo;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {
    private static final String tag = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i(tag, "onCreate");
    }
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(tag, "onStart");
    }
    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i(tag, "onRestart");
    }
    @Override
    protected void onResume() {
        super.onResume();
        Log.i(tag, "onResume");
    }
    @Override
    protected void onPause() {
        super.onPause();
        Log.i(tag, "onPause");
    }
    @Override
    protected void onStop() {
        super.onStop();
        Log.i(tag, "onStop");
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i(tag, "onDestroy");
    }
    


}

 AndroidManifest.xml中的配置

        <activity
            android:name="com.chunjiangchao.demo.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
View Code

 正常流程測試:

啓動Activity,而後點擊後退鍵銷燬,生命週期以下:

啓動Activity後,點擊Home鍵

旋轉屏幕的生命週期

未完待續(仍是夜晚寫吧,上午真的造不出來啊)

相關文章
相關標籤/搜索