安卓API指南之Activity回顧
阿新 • • 發佈:2018-12-03
本系列的文章全部為學習摘要,不偏重各種細節展示,更多的是安卓體系重要節點的羅列,並適時加入少量自己的理解分析,以便能快速的回顧安卓體系結構和那些重要的技術點。
每個 Activity 都會獲得一個用於繪製其使用者介面的視窗。視窗通常會充滿螢幕,但也可小於螢幕並浮動在其他視窗之上。比如透明主題或者Dialog主題的Activity。
一個應用通常由多個彼此鬆散聯絡的 Activity 組成。Activity的管理一般是系統通過任務和返回棧來進行的,這個後面在記錄。
- 建立 Activity
建立 Activity,您必須建立 Activity 的子類(或使用其現有子類)。必須在清單檔案裡宣告該類。例如:
<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
一般必須要是實現的方法:onCreate()–在此方法內呼叫 setContentView(),以定義 Activity 使用者介面的佈局;;onPause()–此方法是使用者離開 Activity 的第一個訊號。
- 啟動Activity以及獲得結果
//啟動
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
startActivity(intent);
//啟動獲得結果
private void pickContact() {
// Create an intent to "pick" a contact, as defined by the content provider URI
Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// If the request went well (OK) and the request was PICK_CONTACT_REQUEST
if (resultCode == Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) {
/......
}
}
}
- 實現生命週期回撥
在api14+時,系統在Application裡添加了記錄Activity生命週期的方法ActivityLifecycleCallbacks,挺實用的,還可以根據onstart和onStop的切換來實時監控應用是否處於後臺。
其它有關的來個表更合適。
是否能在事後終止?列中標記為“否”的方法可從系統呼叫它們的一刻起防止承載 Activity 的程序被終止。也就是非極端情況下,在執行這些“否”方法時,該Activity不會被回收。
- 儲存 Activity 狀態
當Acty被非正常銷燬時,系統會先呼叫 onSaveInstanceState()來儲存一些資料。 當系統重建該 Activity,將會將包含資料的 Bundle 同時傳遞給 onCreate() 和 onRestoreInstanceState()。您可以使用上述任一方法從 Bundle 提取您儲存的狀態並恢復該 Activity 狀態。如果沒有狀態資訊需要恢復,則傳遞給您的 Bundle 是空值(如果是首次建立該 Activity,就會出現這種情況)。
注意:系統呼叫 onSaveInstanceState(),它會在呼叫 onStop() 之前,並且可能會在呼叫 onPause() 之前進行呼叫。
- 處理配置變更
有些裝置配置可能會在執行時發生變化(例如螢幕方向、鍵盤可用性及語言)。 發生此類變化時,Android 會重建執行中的 Activity(系統呼叫 onDestroy(),然後立即呼叫 onCreate())。處理此類重啟的最佳方法是利用onSaveInstanceState() 和 onRestoreInstanceState()(或 onCreate())儲存並恢復 Activity 的狀態。具體會在後面的文章中記錄。
作者: 劉鹹尚
- 協調 Activity
當 Activity A 啟動 Activity B 時一系列操作的發生順序:
-> Activity A 的 onPause() 方法執行。
-> Activity B 的 onCreate()、onStart() 和 onResume() 方法依次執行。(Activity B 現在具有使用者焦點。)
-> 如果 Activity A 在螢幕上不再可見,則其 onStop() 方法執行。