Android activity總結

目錄

1.activity生命週期

2.activity的啓動方式


1.activity生命週期

(下圖源網絡)

 由圖可知,activity生命週期包含7種方法。

    onCreate():表示activity正在創建。我們可以在此方法完成一些初始化工作。此方法含有參數Bundle savedInstanceState,用        於恢復activity異常情況下被銷燬時保存的信息。

    onStart():表示activity正在啓動。這時activity已經可見,但不在前臺,還無法與用戶交互。

    onResume():此時activity可見,在前臺,可交互。

    onPause():表示activity正在停止。可做數據存儲,停止動畫等不太耗時的操作。

    onStop():表示activity即將停止。可做稍微重量級的回收操作,如取消網絡連接,但不能太耗時。

    onDestroy():表示activity即將銷燬。這是activity生命週期最後的回調,可做資源釋放和一些回收工作。

    onRestart():表示activity重新啓動。activity由後臺切換到前臺,由不可見到可見。

activity根據具體情況調用不同的方法,下面是一些activity生命週期切換的情況。

注意:①當A活動啓動B活動時,先執行A活動的onPause(),再執行B活動的oncreate(),onStart(),onResume(),再執行A的onStop()。返回時,先執行B的onPause(),再執行A的onRestart(),onStart(),onResume(),再執行B的onStop(),onDestroy().

②當活動打開新活動而不被完全覆蓋不可見時,只調用onPause()方法,不會調用onStop().(例如新活動爲透明主題)

當activity在異常情況下被終止時,系統會調用 onSaveInstanceState()來保存activity的狀態,這個方法調用在onStop()前,與onPause()無既定先後順序。activity被重新創建後,系統會調用onRestoreInstanceState()方法,並將onSaveInstanceState()保存信息通過Bundle對象作爲參數傳給onRestoreInstanceState()方法和onCreate()方法。onRestoreInstanceState()調用在onStart()之後。

2.activity的啓動方式

     activity一共有4種啓動方式:Standard,SingleTop,SingleInstance,SingleTask。有兩種指定方式,第一種可通過AndroidMenifest 指定。

<activity android:name=".MainActivity"
          android:launchMode="singleTask">

第二種可通過在Intent設置標誌位指定。

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

當兩種方式同時指定時,以後者指定方式啓動。:

     ①Standard:標準模式,系統默認模式。每次啓動一個activity都會新建一個實例。

     ②SingleTop:棧頂複用模式。啓動一個activity先檢查是否已有實例位於任務棧頂,有則複用,調用此實例的onNewIntent(),

        無則新建。(存在實例但不在棧頂依舊新建)

     ③SingleInstance:單實例模式。此模式的activity單獨位於一個任務棧。

     ④SingleTask:棧內複用模式。啓動一個activity時檢查其任務棧內是否已存在實例(任務棧不存在時新建任務棧,新建實例),            如果存在則複用,調用其onNewIntent()方法,並將位於此實例頂部的activity出棧,把它調至棧頂。不存在則新建壓入棧。

  標識activity任務棧名稱的屬性:android:taskAfffinity。默認爲應用包名。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章