Android基礎知識梳理-Activity組件

Android基礎知識梳理--activity組件

  • 功能:提供與用戶進行交互的界面、展示數據
  • 基本用法:Activity本質上就是一個Java類,不過我們在使用的時候需要繼承Activity這個基類,并且需要在AndroidManifest.xml文件中注冊,不注冊使用的時候會拋異常,每個Activity一般會有對應的xml文件來放置布局。
  • 生命周期方法
    • onCreate :Activity第一次創建的時候被調用
    • onStart :Activity從不可見轉為可見的時候調用
    • onResume:Activity處于可見的時候調用
    • onPause:程序準備啟動或者恢復另一個activity的時候調用
    • onStop:activity完全不可見的時候調用
    • onDestory:activity被銷毀前調用
    • onRestart:由停止狀態轉變成運行狀態的時候調用
  • activity的四種狀態
    • 運行狀態:此時activity位于棧頂
    • 暫停狀態:activity不處于棧頂,但仍然在前臺(即:仍然可見)
    • 停止狀態:不處于棧頂,且處于后臺(完全不可見)
    • 銷毀狀態:activity從棧中移除,并且被系統回收
  • 生命周期詳細說明
    • 啟動activity時候:onCreate ---> onStart ---> onResume
    • 鎖屏或者被其它activity覆蓋:onPause --->onStop
    • 屏幕解鎖或者由被覆蓋狀態回到前臺:onRestart ---> onStart ---> onResume
    • 跳轉到其它activity或者按Home進入后臺:onPause ---> onStop
    • 回退到此activity:onRestart ---> onStart ---> onResume
    • 退出此activity: onPause---> onStop --->onDestory
    • 從Aactivity跳轉到Bactivity:A的onPause ---> B的onCreate ---> B的onStart ---> B的onResume ---> A的onStop
    • 從Bactivity返回Aactivity:B的onPause ---> A的onRestart ---> A的onStart ---> A的onResume ---> B的onStop --->B的onDestory(從B調回A的時候,A沒有銷毀,如果A銷毀的話重新走一次啟動時候的activity生命周期)
  • activity啟動模式
    • standard標準模式:此模式是activity的默認模式,在這種模式下,每次調用startActivity都會創建activity
    • singleTop單一頂部模式:每次調用startActivity,系統會判斷當前的activity是否已經被創建并且位于棧頂,如果沒創建或者不位于棧頂,都會創建一個activity實例,如果是,就直接調用。一般用于特殊需求,比如一直彈出某個頁面。
    • singleTask單一任務棧模式:如果任務棧中已經存在當前的activity,就直接去調用activity實例,并且把activity實例以上的activity彈棧,不存在,就新建activity實例,這種模式一般用于當某個界面需要顯示的資源非常大,只需要初始化一次實例。
    • singleInstance單一實例模式:activity會在一個新的任務棧中實例化,并且其它的activity不會創建在新的任務棧中,在整個程序中,始終只初始化一次,一般用于只需要初始化一次的頁面。
  • onSaveInstanceState方法
    • 用于保存activity的狀態存儲一些臨時數據
    • activity被覆蓋或者進入后臺時,系統因為資源不足導致activity被殺死的時候調用
    • 用戶改變屏幕方向的時候也會調用
    • 跳轉到其它activity或者用戶按Home鍵的時候調用
  • onRestoreInstanceState方法
    • 用于恢復保存的臨時數據
    • 這個方法需要傳入一個Bundle參數,這個Bundle參數也會傳遞到onCreate方法中,也可以在onCreate方法中恢復數據
    • 因為系統資源不足activity被殺死之后重新回到此activity時候也會被調用
    • 用戶改變屏幕方向重建activity的時候也會被調用
    • 會在onStart之后調用
  • 一些需要注意的地方
    • 設置activity豎屏,在activity對應的AndroidMainifest.xml中設置android:screenOrientation="portrait"屬性或者在onCreate中調用setRequestOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
    • 設置activity橫屏:在activity對應的AndroidMainifest.xml中設置android:screenOrientatiaon="landscape"屬性或者在onCreate中調用setRequestOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
    • 切換屏幕方向的時候activity會銷毀、重建,重走一次生命周期:onPause--->onStop--->onDestory--->onCreate--->onStart--->onResume
    • 給activity設置不同的affinity屬性就可以將同一個程序中的activity存放在不同的任務棧中,但是啟動activity的Intent需要包含FLAG_ACTIVITY_NEW_TASK標志
    • 給activity設置android:theme="@android:style/Theme.Dialog"可以將activity設置成窗口的樣式
  • 問題:內存不足的時候怎么保存activity的狀態?做哪些操作?
    在需要保存的activity中的onSaveInstanceState方法中保存activity的狀態,然后在onRestoreInstanceState方法中或者onCreate方法中恢復activity的狀態。
  • 問題:怎么退出activity?怎么安全地退出已經調用多個activity的Application?
    直接調用finish方法就可以退出activity。
      安全退出多個activity的方法:
    1、 拋異常強制退出,但是這樣會彈出Force Close窗口,需要解決這個問題
    2、記錄打開的activity,在需要退出的時候,依次結束掉每一個activity
    3、 發送廣播退出,需要結束應用的時候發送一個廣播,每個activity接收到廣播就關閉即可
    4、 遞歸退出,調用新的activity的時候使用startActivityForResult,然后給每個activity添加標志,在onActivityResult中處理,遞歸關閉
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,885評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,312評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,993評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,667評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,410評論 6 411
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,778評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,775評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,955評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,521評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,266評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,468評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,998評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,696評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,095評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,385評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,193評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,431評論 2 378

推薦閱讀更多精彩內容