Activity基本操作
Activity(活動)是一種展示型組件,它主要用於實現應用功能邏輯,並通過界面顯示數據或接受用戶輸入。
- 一個程序可以包含零個或多個活動。沒有活動的應用程序,用戶將無法看到程序界面,這種應用程序通常在後臺運行,不涉及用戶交互。
爲活動綁定自定義視圖
setContentView(R.layout.activity_main);
啓動另一個活動
startActivity(intent);
結束活動
finish();
Activity生命週期
Activity的生命週期指Activity從創建到被銷燬的整個過程。在一個生命週期內,Activity可能存在多種狀態。深入瞭解Activity的生命週期,有助於更合理管理應用程序資源,設計出效率更高的應用。
啓動狀態
當Activity啓動後便會進入下一狀態。
運行狀態
Activity處於屏幕最前端,可與用戶進行交互。
暫停狀態
Activity仍然可見,但是無法獲取焦點,用戶對它操作沒有響應。
停止狀態
Activity完全不可見,系統內存不足時會銷燬該Activity。
銷燬狀態
Activity將會被清理出內存。
Activity生命週期包括創建、可見、獲取焦點、失去焦點、不可見、重新可見、銷燬等環節,每個環節Activity都定義了相關的回調方法,具體如下:
- onCreate():Activity創建時調用,通常做一些初始化設置
- onStart():Activity即將可見時調用
- onResume():Activity獲取焦點時調用
- onPause():當前Activity被其他Activity覆蓋或屏幕鎖屏時調用
- onStop():Activity對用戶不可見時調用
- onDestory():Activity銷燬時調用
- onRestart():Activity從停止狀態到再次啓動時調用
Activity數據傳遞
主要有使用putExtra()傳遞數據,使用Bundle對象傳遞數據、獲取活動返回的數據
使用putExtra()傳遞數據
putExtra(name,value)方法可將指定的數據封裝到Intent對象中。其中,name爲表示數據名稱的字符串,value爲要傳遞的各種數據類型的值。
要獲取Intent對象中封裝的數據,可調用各種getXXXExtra()方法:
- getCharExtra(String name,char defaultValue):獲取指定name的char類型數據
- getFloatExtra(String name,float defaultValue):獲取指定name的float類型數據
- getFloatArrayExtra(String name):獲取指定name的float類型數據
- getIntArrayExtra(String name):獲取指定name的int類型數據
- getIntExtra(String name,int defaultValue):獲取指定name的int類型數據
- getStringArrayExtra(String name):獲取指定name的String類型數據
- getStringExtra(String name):獲取指定name的String類型數據
- getSerializableExtra(String name):獲取指定name對象數據
使用Bundle對象傳遞數據
- 將各種數據封裝到一個Bundle對象中,再將Bundle對象封裝到Intent對象中傳遞給啓動的活動。
- Bundle對象的各種putXXX(String key,XXX value)方法,可將XXX類型的數據封裝到其中,對應的用getXXX(String key)方法中獲取數據。
- Bundle對象準備好之後,調用putExtras(bundle)或putExtra(name,bundle)方法將其封裝到Intent中。
- 要從Intent對象中獲取Bundle對象是,調用的getExtras()或getBundleExtra()方法即可。
獲取活動返回的數據
startActivityForResult(intent,requestCode)方法來啓動活動,請求返回結果:
- 參數intent是一個Intent對象,用於封裝需要傳遞給活動的數據;
- 參數requestCode爲請求碼,是一個整數,用來標識當前請求;一個活動可能會接收到其他不同活動的請求,從活動返回時,他會原樣返回接收到的請求碼;
- 在處理返回結果時,可通過請求碼判斷是不是從所請求的活動的活動返回。
在第二個Activity中,用setResult(resultCode,intent)方法設置返回結果,resultCode爲結果代碼,intent爲封裝了返回數據的Intent對象。
在第一個Activity中需重寫onActivityResult(int requestCode,int resultCode,Intent data)方法來處理返回結果:
- requestCode爲從所請求的活動返回它所接受的請求碼;
- resultCode爲結果代碼,常量RESULT_CANCELED表示用戶取消了操作,RESULT_OK表示用戶正確完成了操作;
- data爲請求活動返回的Intent對象,從中可獲取返回數據。