Android開發_Activity組件



一、Activity的生命週期

      1.啓動Activity:系統會先調用onCreate方法,然後調用onStart方法,最後調用onResume,Activity進入運行狀態。

      2.當前Activity被其他Activity覆蓋其上並處於可見狀態(如被對話框或半透明的Activity覆蓋)或被鎖屏:系統會調用onPause方法,暫停當前Activity的執行。

      3.當前Activity由被覆蓋狀態回到前臺或解鎖屏:系統會調用onResume方法,再次進入運行狀態。

      4.當前Activity轉到新的Activity界面或按Home鍵回到主屏,自身退居後臺:系統會先調用onPause方法,然後調用onStop方法,進入停滯狀態。

      5.用戶後退回到此Activity:系統會先調用onRestart方法,然後調用onStart方法,最後調用onResume方法,再次進入運行狀態。

      6.當前Activity處於被覆蓋狀態或者後臺不可見狀態,即第2步和第4步,系統內存不足,殺死當前Activity,而後用戶退回當前Activity:再次調用onCreate方法、onStart方法、onResume方法,進入運行狀態。

      7.用戶退出當前Activity:系統先調用onPause方法,然後調用onStop方法,最後調用onDestory方法,結束當前Activity。


生命週期圖流程圖


Activity的幾種狀態:

         1、運行狀態(Resumed或Running狀態):此時該Activity位於屏幕的最上層(系統堆棧中的最頂端),並且有用戶焦點。

         2、暫停狀態(Paused狀態):此時的Activity被另外一個Activity所覆蓋,並失去了用戶焦點,但該Activity仍然處於可見時,該狀態就屬於暫停狀態,處於Paused狀態的Activity依然是alive的,並沒有從系統中消失(該Activity本身所有的狀態及數據都還存在,也跟窗口管理程序WindowManager保持聯繫),處於這種狀態的Activity,當系統的內存不夠用時,系統會自動判斷,把優先級較低的Activity刪除。

         3、停止狀態(Stop狀態):當一個Activity完全被另外一個Activity所覆蓋,處於不可見時,該Activity就處於Stop狀態;但該Activity仍然保有全部的狀態及數據,但是因爲不再被使用者看見,所以它的畫面是被隱藏起來的,當系統內存不足時,這種狀態的Activity是最優先被系統考慮拿來釋放內存的。


啓動另外一個Activity

Intent i  = new Intent(Activity1.this,Acvitity2.class)
i.putExtra("key", "value");// 向Activity2中傳遞數據
// 傳遞數據的另外一種形式
Bundle bundel = new Bundel();
bundel.putString("key2", "value2");
i.putExtras(bundel);
		
//Activity2獲取數據的了兩種形式
String value = getIntent().getStringExtra("key");
Bundle bundel2 = getIntent().getExtras();
String value2 = (String) bundel2.get("key2");
		
startActivity(i);// 啓動Activity2
/* 啓動Activity2,並可以Activity2關閉時獲取返回的數據
 * 要想獲取返回數據需要重載onActivityResult()方法
 * 並在Activity2中調用setResult()方法
 */
startActivityForResult(i,0);

想要接收Activity返回的數據,需要重寫下面的方法

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	super.onActivityResult(requestCode, resultCode, data);
}



發佈了46 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章