Android的Activity(活動)

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對象傳遞數據

  1. 將各種數據封裝到一個Bundle對象中,再將Bundle對象封裝到Intent對象中傳遞給啓動的活動。
  2. Bundle對象的各種putXXX(String key,XXX value)方法,可將XXX類型的數據封裝到其中,對應的用getXXX(String key)方法中獲取數據。
  3. Bundle對象準備好之後,調用putExtras(bundle)或putExtra(name,bundle)方法將其封裝到Intent中。
  4. 要從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對象,從中可獲取返回數據。
發佈了11 篇原創文章 · 獲贊 43 · 訪問量 8470
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章