標籤:四大組件 activity生命週期 activity android 資料
一、Activity簡述
Activity是Android應用中負責與使用者互動的組件。在應用中建立自己的Activity需要繼承Activity或者繼承Activity的
子類。
public class TestActivity extends Activity {}
二、Activity的使用
從圖1.1可以看出Activity間接繼承了ContextThemeWrapper、ContextWrapper、Context、Object這些基類,因此
Activity可以直接調用它們的方法。當然只是繼承Activity是沒有任何意義的,我們還需要實現Activity的一個或多個方
法。
圖1.1
在平時開發中最常用到的是onCreate(Bundle savedInstanceState)方法,此方法在Activity建立時被回調,我們可
以通過setContentView方法的載入需要顯示的視圖。在Activity中提供了三個setContentView方法,見圖1.2
圖1.2
(1)public void setContentView(int layoutResID):從資源檔中載入布局ID
(2)public void setContentView(View view):載入一個視圖到Activity中。
(3)public void setContentView(View view, ViewGroup.LayoutParams params):載入一個指定的視圖到Activity
中,並通過params設定布局參數。
建立完我們需要的Activity後,還需要在AndroidMainfest.xml中進行配置。
<activity android:name="com.example.TestActivity">
當自己的Activity建立完畢後,我們需要啟動或者進行銷毀,Activity的啟動可以使用以下兩個方法:
(1)publicvoid startActivity(Intent intent):啟動Activity。
(2)publicvoid startActivityForResult(Intent intent,intrequestCode):以指定的請求碼requestCode啟動Activity,
當啟動的Activity返回時,可以通過onActivityResult(intrequestCode,int resultCode, Intent data)方法擷取結果。
銷毀Activity可以使用以下方法:
(1)publicvoid finish():結束當前Activity。
(2)publicvoid finishActivity(intrequestCode):結束以startActivityForResult(Intentintent,int requestCode)方法啟
動的Activity。
三、Activity之間的資料傳遞
當我們從一個Activity啟動另一個Activity時,需要將一些資料傳遞過去,這時我們就需要使用Intent,可以使用
Intent提供的多個重載的putExtra方法來進行傳遞,見圖1.3
圖1.3
從圖1.3可以看出,通過Intent可以傳遞的資料類型多種多樣,相應的可以通過圖1.4中的方法調用Intent的get方法,獲
取相應的資料。
圖1.4
四、Activity的生命週期
從Activity建立到銷毀,Activity的狀態大致可以分為以下四類:
(1) 活動狀態:當前的Activity位於前台,使用者可見,可以獲得焦點。
(2) 暫停狀態:其他Activity位於前台,該Activity依然可見,只是不能獲得焦點。
(3) 停止狀態:該Activity不可見,失去焦點。
(4) 銷毀狀態:該Activity結束,或Activity所在的Dalvik進程被結束。
Activity的生命週期請參看圖1.5所示:
圖1.5
public class Activity extends ApplicationContext { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); }
onCreate(BundlesavedInstanceState):建立Activity時被回調。該方法只會被調用一次。
onStart():啟動Activity時被回調。
onRestart():重新啟動Activity時被回調。
onResume():恢複Activity時被回調,onStart()方法後一定會回調onResume()方法。
onPause():暫停Activity時被回調。
onStop():停止Activity時被回調。
onDestroy():銷毀Activity時被回調。該方法只會被調用一次。
從圖1.5可以得出,一個Activity正常啟動的過程中,他們被調用的順序是 onCreate -> onStart-> onResume。
在Activity被幹掉的時候順序是onPause-> onStop -> onDestroy ,這樣就是一個完整的生命週期。
如果中止的時候新出的一個Activity是全屏時的調用順序是onPause->onStop,恢複的時候onStart->onResume。
如果打斷 這個應用程式的是一個Theme為Translucent 或者Dialog 的Activity那麼只是onPause ,恢複 的時候
onResume 。
圖1.6
從圖1.6可以看出, onPause,onstop, onDestroy,三種狀態 下 activity都有可能被系統幹掉,為了保證程式的正
確性,你要在onPause()裡寫上持久層操作的代碼,將使用者編輯的內容都儲存到儲存介質上(一般都是資料庫 )。看看
官網給出的例子:
public class CalendarActivity extends Activity { ... static final int DAY_VIEW_MODE = 0; static final int WEEK_VIEW_MODE = 1; private SharedPreferences mPrefs; private int mCurViewMode; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences mPrefs = getSharedPreferences(); mCurViewMode = mPrefs.getInt("view_mode", DAY_VIEW_MODE); } protected void onPause() { super.onPause(); SharedPreferences.Editor ed = mPrefs.edit(); ed.putInt("view_mode", mCurViewMode); ed.commit(); } }
在onPause()中使用SharedPreferences.Editor進行寫入,在onCreate(Bundle savedInstanceState)中進行讀取。
轉載請註明出處:http://blog.csdn.net/hai_qing_xu_kong/article/details/47315083情緒控_
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
關於Android中的四大組件(Activity)