Android 四大元件之——Acitivity(一)
一,什麼是Activity
activity是Android元件中最基本也是最為常見用的四大元件之一。Android四大元件有Activity,Service服務,Content Provider內容提供,BroadcastReceiver廣播接收器。
Activity中所有操作都與使用者密切相關,是一個負責與使用者互動的元件。
二,Activity的生命週期
上圖是官方給出的Activity生命週期圖,其實這張圖就能完整描述了Activity的宣告週期,但初學者可能會不太理解。結合上圖來逐一分析。
Activity的生命週期方法有onCreate(), onStart(), onResume(), onPause(), onStop(), onRstart(), onDestroy()。
onCreate() Activity的建立時會呼叫此方法
onStart() Activity在可見時呼叫此方法,此時是不能操作的,只有獲取焦點後才能進行互動
onResume() Activity獲取焦點,此時使用者可以進行互動操作
onPause() Activity失去焦點時呼叫此方法,比如在Activity中彈出對話方塊時,Activity失去焦點
onStop() Activity不可見時呼叫此方法,比如按下Home鍵回到桌面
onRstart() Activity從新可見時呼叫此方法,比如從桌面返回Activity
onDestroy() 退出Activity時呼叫此方法,比如按返回鍵退出當前Activity
Activity 生命週期方法的呼叫在不同場景呼叫有所不同
場景一, 開啟Activity,按返回鍵退出Activity
Activity 的生命週期方法呼叫的順序為: onCreate()——>onStart()——>onResume()——>onPause()——>onStop()——> onDestroy();
場景二,開啟Activity,按下home鍵,然後重新進到介面
Activity 的生命週期方法呼叫的順序為 onCreate()——>onStart()
場景三,開啟Activity,點選Activity中的某個按鈕彈出對話方塊,然後返回到當前Activity
當前Activity 的生命週期方法呼叫的順序為 onCreate()——>onStart()——>onResume()——>onPause()——>onResume()
大概舉這幾個栗子。其他的類似分析即可
三,如何啟動Activity
android四大元件都可以通過Intent來啟動,其中Activity的啟動有兩種:startActivity(intent); startActivityForResult(intent,requestCode);
Intent intent=new Intent(this,TargetActivity.class);
intent.put("key","value");
startActivity(intent);
其中第二行程式碼表示需要傳遞的資料鍵值對,那麼當跳轉到TargetActivity時,以此為慄可以通過如下程式碼獲取傳遞的資料
Intent intent=getIntent();
String val=intent.getStringExtras("key");
其中val就是獲取到的值,當然在實際開發中intent 還可傳遞不同型別的資料,具體傳遞什麼值具體分析,然後根據相應型別獲取對應的值即可。
Activity的第二中啟動為startActivityForResult(intent,requestCode); 當我們需要從目標Activity返回時希望獲取某些資料時可使用此方法
Intent intent =new Intent(this,TargetActivity.class);
startActivityForResult(intent,requestCode);
此方法的第二個引數為請求碼,用來標識不同的請求,同時必須重寫回調方法
// 回撥方法,從第二個頁面回來的時候會執行這個方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String val= data.getStringExtra("key");
// 根據上面傳送過去的請求嗎來區別
switch (requestCode) {
case 0:
//處理程式
break;
default:
break;
}
}
而在TargetActivity中,在返回時需要新增如下程式碼
Intent mIntent = new Intent();
mIntent.putExtra("key", "hello");
// 設定結果,並進行傳送
this.setResult(resultCode, mIntent);
此時,Activity的基礎介紹完了,在下一篇部落格中將會進一步介紹Activity,敬請關注