Activity的使用

各個(gè)生命周期

  • onCreate()
    創(chuàng)建activity時(shí)調(diào)用递鹉, 在此方法中做一些findView, 變量的初始化,intent的解析等垢村。
  • onStart()
    界面可見狀態(tài)時(shí)回調(diào)。
  • onResume()
    獲取到了焦點(diǎn)時(shí)嚎卫,回調(diào)
  • onPause()
    失去焦點(diǎn)時(shí)回調(diào)嘉栓。不宜做太多邏輯處理, 避免影響要啟動(dòng)的activity的時(shí)間
  • onStop()
    不可見時(shí)回調(diào)
  • onDestroy()
    銷毀activity時(shí)回調(diào)
  • onRestart()
    當(dāng)該activity處于onStop狀態(tài)拓诸,然后又被操作 讓其轉(zhuǎn)變?yōu)榭梢姞顟B(tài)侵佃,即由完全不可諫狀態(tài)轉(zhuǎn)變?yōu)榭梢姞顟B(tài)時(shí), 會(huì)先執(zhí)行onRestart()方法奠支,再執(zhí)行onStart()馋辈。 注意:即使在onRestart()方法中調(diào)用finish()方法, 還是會(huì)在隨后調(diào)用onStart()方法

狀態(tài)的保存與恢復(fù)

  • onSaveInstanceState(Bundle outState)
    此方法會(huì)在切換 狀態(tài)時(shí)倍谜,而要切換后的狀態(tài)很可能被動(dòng)的回收掉時(shí)迈螟,為了恢復(fù)時(shí)能重現(xiàn)之前的現(xiàn)場(chǎng),做的一些狀態(tài)保存操作尔崔。注意activity中的布局view設(shè)置了id的才會(huì)保存和恢復(fù)答毫。沒有設(shè)置id,無法恢復(fù)
    此方法一定在onStop方法前調(diào)用季春, 但和onPause方法的前后順序不確定
  • onRestoreInstacneState(Bundle savedInstanceState)
    在此方法中做恢復(fù)狀態(tài)洗搂。恢復(fù)狀態(tài)的邏輯也可以寫在onCreate方法中载弄, 但在onCreate方法中做恢復(fù)狀態(tài)耘拇,要判斷參數(shù) 是否為空, 不為空 表示之前有保存狀態(tài)宇攻。
    而在onRestoreInstanceState方法中不需要判斷參數(shù)!= null驼鞭。

一些比較有用的方法

  • onPostCreate(Bundle savedInstanceState)
    此方法在activity徹底跑起來后調(diào)用, 因此可以用來獲取view的寬高尺碰。等一些時(shí)機(jī)敏感的操作挣棕。不過此方法一般不建議重寫译隘。此方法是在onResume前調(diào)用的。

onActivityResult

當(dāng)調(diào)用startActivityForResult(intent, requestCode)方法啟動(dòng)另一個(gè)Activity時(shí)洛心, 另一個(gè)Activity返回到此activity會(huì)攜帶一個(gè)Intent固耘,以及requestCode, resultCode
onActivityResult(int requestCode, int resultCode, Intent data)

setResult

setResult(int resultCode, Intent intent) || setResult(int resultCode)词身。 設(shè)置返回結(jié)果和數(shù)據(jù)厅目, 后一個(gè)返回值 數(shù)據(jù)為null

隱式啟動(dòng)注意事項(xiàng)

必須有action,必須有設(shè)置<category android:name="android.intent.category.DEFAULT"/>因?yàn)閟tartActivity會(huì)默認(rèn)設(shè)置category為default法严。
匹配activity的規(guī)則是损敷,滿足Activity的設(shè)置的任意一條intent-filter。何謂滿足了該intent-filter深啤?就是下面的規(guī)則:該intent-filter里拗馒,其中多個(gè)action和多個(gè)data滿足一個(gè)就行,category必須全部滿足溯街。

4種啟動(dòng)模式

  • standard
    標(biāo)準(zhǔn)啟動(dòng)模式诱桂, 每一次啟動(dòng)都在任務(wù)棧中新生成一個(gè)Activity實(shí)例置于棧頂
  • singleTop
    如果任務(wù)棧頂就是要啟動(dòng)的Activity同類實(shí)例。則不生成新實(shí)例呈昔,而是調(diào)用棧頂?shù)腁ctivity的onNewIntent()方法
  • singleTask
    一個(gè)任務(wù)棧中已經(jīng)存在要啟動(dòng)的Activity的實(shí)例時(shí)挥等, 會(huì)將其上的activity全部finish掉, 然后調(diào)用onNewIntent()方法
  • singleInstance
    如果系統(tǒng)中已經(jīng)存在一個(gè)擁有該Activity實(shí)例的任務(wù)棧堤尾, 則直接調(diào)用該實(shí)例的onNewIntent方法肝劲。 否則,會(huì)單獨(dú)新開一個(gè)任務(wù)棧郭宝, 生成該Activity的實(shí)例辞槐。

值得注意的坑

當(dāng)要啟動(dòng)的activity的launchMode為singleTask或者singleInstance時(shí),如果是使用startActivityForResult啟動(dòng)剩蟀,則會(huì)立馬執(zhí)行onActivityResult方法,且收到一個(gè) RESULT_CANCEL的resultCode切威。背后的原理是兩個(gè)activity不在同一個(gè)任務(wù)棧中導(dǎo)致育特。 因此需要采用廣播 或者發(fā)送事件的方式代替此方法!

onConfigurationChanged

尤其要注意屏幕旋轉(zhuǎn)問題時(shí)的處理先朦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缰冤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子喳魏,更是在濱河造成了極大的恐慌棉浸,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刺彩,死亡現(xiàn)場(chǎng)離奇詭異迷郑,居然都是意外死亡枝恋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門嗡害,熙熙樓的掌柜王于貴愁眉苦臉地迎上來焚碌,“玉大人,你說我怎么就攤上這事霸妹∈纾” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵叹螟,是天一觀的道長(zhǎng)鹃骂。 經(jīng)常有香客問我,道長(zhǎng)罢绽,這世上最難降的妖魔是什么畏线? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任账月,我火速辦了婚禮遇伞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘藕溅。我一直安慰自己棚壁,他們只是感情好杯矩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著袖外,像睡著了一般史隆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上曼验,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天泌射,我揣著相機(jī)與錄音,去河邊找鬼鬓照。 笑死熔酷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的豺裆。 我是一名探鬼主播拒秘,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼臭猜!你這毒婦竟也來了躺酒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤蔑歌,失蹤者是張志新(化名)和其女友劉穎羹应,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體次屠,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡园匹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年雳刺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片偎肃。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡煞烫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出累颂,到底是詐尸還是另有隱情滞详,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布紊馏,位于F島的核電站料饥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏朱监。R本人自食惡果不足惜岸啡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赫编。 院中可真熱鬧巡蘸,春花似錦、人聲如沸擂送。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘹吨。三九已至搬味,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蟀拷,已是汗流浹背碰纬。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留问芬,地道東北人悦析。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像此衅,于是被迫代替她去往敵國和親强戴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容