關於Android中的四大組件(Activity)

來源:互聯網
上載者:User

標籤:四大組件   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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.