Activity生命週期互動設計思想和應用場景(附原始碼)
阿新 • • 發佈:2019-01-03
Activity生命週期互動設計思想
1.在多個Activity進行互動的時候,為什麼要先暫停(onPause()方法)當前的Activity,執行新的Activity的onCreate()方法,onStart()方法,onResume()方法?
答:比如當你正在一個頁面(Activity)上看視訊,此時,頁面正處於onResume()方法。正在這個時候,突然來了一個電話。此時Android的處理是:首先把第一個視訊的頁面暫停(onPause()方法),然後再執行第二個頁面的onCreate()方法,onStart()方法,onRsume()方法。當第二個頁面獲得焦點(onResume()方法)
2.Activity橫豎屏切換:
首先Activity先執行一個生命週期的函式,然後再重新建立一個新的Activity。
以下是Android在橫豎屏切換的時候呼叫的方法:儲存資訊在引數中。
/**
* 儲存資訊到引數中
*/
@Override
protected void onSaveInstanceState (Bundle outState) {
super.onSaveInstanceState(outState);
/**
* 儲存資訊
*/
outState.putString("key", "value");
}
/**
* 引數中取出儲存的資訊
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
* 取出儲存的資訊
*/
if (savedInstanceState != null) {
String value = savedInstanceState.getString("key");
}
}
3.Android生命週期應用場景:
(1).onDestory()方法:釋放掉與Activity相關的一些屬性,為了防止記憶體洩漏,在優化等方面很重要。
(2).Activity啟動的方式:
A:顯示啟動方式:直接通過類名來啟動。
Intent intent = new Intent(MainActivity.this,SecondActiivty.class);
startActivity(intent);
B.隱式啟動方式:通過設定Action屬性標籤和種類標籤。應用於啟動不知類名的Activity。例如啟動系統的類名。不是啟動本應用程式的Activity。如下啟動系統常見的Activity:
(1).啟動系統的瀏覽器:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri uri = Uri.parse("https://www.baidu.com/");
intent.setData(uri);
startActivity(intent);
(2).啟動相簿:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent,0);
(3).傳送簡訊:
Uri uri = Uri.parse("smsto:13607567010");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "The SMS text");
startActivity(intent);
<uses-permission android:name="android.permission.SEND_SMS" />
(4).啟動電話介面:
Uri uri = Uri.parse("tel:13607567010");
Intent intent = new Intent(Intent.ACTION_CALL, uri);
startActivity(intent);
<uses-permission android:name="android.permission.CALL_PHONE" />