037android初級(jí)篇之Activity的幾個(gè)重要函數(shù)

常規(guī)的生命周期的幾個(gè)函數(shù)就不說了,說幾個(gè)之前自己用的不多的

onTouchEvent

public boolean onTouchEvent(MotionEvent event)  

手機(jī)屏幕事件的處理方法onTouchEvent。該方法在View類中的定義览爵,并且所有的View子類全部重寫了該方法语淘,應(yīng)用程序可以通過該方法處理手機(jī)屏幕的觸摸事件。該方法的簽名如下所示帘不。

參數(shù)event:參數(shù)event為手機(jī)屏幕觸摸事件封裝類的對(duì)象,其中封裝了該事件的所有信息铛纬,例如觸摸的位置厌均、觸摸的類型以及觸摸的時(shí)間等。該對(duì)象會(huì)在用戶觸摸手機(jī)屏幕時(shí)被創(chuàng)建告唆。

返回值:該方法的返回值機(jī)理與鍵盤響應(yīng)事件的相同棺弊,同樣是當(dāng)已經(jīng)完整地處理了該事件且不希望其他回調(diào)方法再次處理時(shí)返回true,否則返回false擒悬。

onNewIntent

protected void onNewIntent(Intent intent) 

singTask模式下模她,系統(tǒng)創(chuàng)建一個(gè)新的Task,并在Task的底部實(shí)例化Activities懂牧。然而侈净,當(dāng)一個(gè)實(shí)例存在于一個(gè)獨(dú)立的Task時(shí),系統(tǒng)不是去創(chuàng)建一個(gè)新的實(shí)例僧凤,而是調(diào)用onNewIntent()路由到其他任務(wù)的實(shí)例畜侦。在同一時(shí)間,只存在一個(gè)Activity實(shí)例躯保。

Activity第一啟動(dòng)的時(shí)候執(zhí)行onCreate()---->onStart()---->onResume()等后續(xù)生命周期函數(shù)旋膳,也就時(shí)說第一次啟動(dòng)Activity并不會(huì)執(zhí)行到onNewIntent(). 而后面如果再有想啟動(dòng)Activity的時(shí)候,那就是執(zhí)行onNewIntent()---->onResart()------>onStart()----->onResume(). 如果android系統(tǒng)由于內(nèi)存不足把已存在Activity釋放掉了途事,那么再次調(diào)用的時(shí)候會(huì)重新啟動(dòng)Activity即執(zhí)行onCreate()---->onStart()---->onResume()等验懊。

當(dāng)調(diào)用到onNewIntent(intent)的時(shí)候,需要在onNewIntent() 中使用setIntent(intent)賦值給Activity的Intent.否則尸变,后續(xù)的getIntent()都是得到老的Intent义图。

onKeyDown

跟onTouchEvent類似,不過處理的是按鍵事件

moveTaskToBack

模擬現(xiàn)在的主流應(yīng)用最后按Back鍵時(shí)不是強(qiáng)制退出應(yīng)用或直接結(jié)束根Activity召烂,而是采取類Home鍵效果碱工,此時(shí)可以直接通過此函數(shù)實(shí)現(xiàn),非常實(shí)用。

@Override
 public void onBackPressed() {
     moveTaskToBack(true);
 }

startActivityForResult / onActivityResult / setResult 函數(shù)組合

此函數(shù)組合主要用于如下場(chǎng)景:用戶在A Activity上點(diǎn)擊某個(gè)按鈕痛垛,跳轉(zhuǎn)到B Activity草慧,然后用戶在B Activity上進(jìn)行一些具體的操作,待操作完成后返回到A Activity匙头,同時(shí)常常將B Activity中操作的一些數(shù)據(jù)返回到A Activity中漫谷。

再如上場(chǎng)景中,A -> B 需要通過startActivityForResult()方式打開蹂析。

onSaveInstanceState / onRestoreInstanceState調(diào)用時(shí)機(jī)

onSaveInstanceState調(diào)用時(shí)機(jī):當(dāng)Activity變得“容易”被系統(tǒng)銷毀時(shí)舔示,onSaveInstanceState即被回調(diào),除非該activity是被用戶主動(dòng)銷毀的电抚,例如當(dāng)用戶按BACK鍵的時(shí)候惕稻。

注意上面的雙引號(hào),何為“容易”蝙叛?言下之意就是該activity還沒有被銷毀俺祠,而僅僅是一種可能性。這種可能性有哪些借帘?

1.當(dāng)用戶按下HOME鍵時(shí)蜘渣;
2.長(zhǎng)按HOME鍵,選擇運(yùn)行其他的程序時(shí)肺然;
3.按下電源按鍵(關(guān)閉屏幕顯示)時(shí)蔫缸;
4.從activity A中啟動(dòng)一個(gè)新的activity時(shí);
5.屏幕方向切換時(shí)际起,例如從豎屏切換到橫屏?xí)r拾碌。

onRestoreInstanceState調(diào)用時(shí)機(jī),activity A“確實(shí)”被系統(tǒng)銷毀了街望,而如果僅僅是停留在有這種可能性的情況下校翔,則該方法不會(huì)被調(diào)用。另外灾前,onRestoreInstanceState的bundle參數(shù)也會(huì)傳遞到onCreate方法中展融,也可以選擇在onCreate方法中做數(shù)據(jù)還原。

@Override
 2     protected void onRestoreInstanceState(Bundle savedInstanceState) {
 3         // TODO Auto-generated method stub
 4         super.onRestoreInstanceState(savedInstanceState);
 5         savedInstanceState.getString("name", "");
 6         
 7     }
 8 
 9     @Override
10     public void onSaveInstanceState(Bundle savedInstanceState) {
11         super.onSaveInstanceState(savedInstanceState);
12         savedInstanceState.putString("name", "corn");
13     }

或在onCreate中:

 1 public class AActivity extends ActionBarActivity {
 2 
 3     private String name;
 4 
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.a);
 9 
10         if (savedInstanceState != null) {
11             name = savedInstanceState.getString("name");
12         }
13 
14     }
15 
16 }

需要注意的是豫柬,onSaveInstanceState被調(diào)用時(shí),其調(diào)用發(fā)生在Activity生命周期中具體的位置扑浸。以A->B為例烧给,A中onSaveInstanceState調(diào)用發(fā)生在A:onPause -> B:onCreate -> B:onResume -> A:onSaveInstanceState -> A:onStop。

onSaveInstanceState常常用于存儲(chǔ)應(yīng)用程序中當(dāng)前Activity中重要的狀態(tài)數(shù)據(jù)喝噪,以免Activity被系統(tǒng)意外殺掉的情況下當(dāng)用戶再次回來時(shí)不能找到之前的狀態(tài)础嫡。如同一個(gè)Activity中使用多個(gè)fragment實(shí)現(xiàn)菜單功能時(shí),最好需要在此函數(shù)中記錄下當(dāng)前菜單對(duì)應(yīng)的fragment id等。

參考鏈接

  1. Android總結(jié)篇系列:Activity中幾個(gè)主要函數(shù)詳解
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末榴鼎,一起剝皮案震驚了整個(gè)濱河市伯诬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌巫财,老刑警劉巖盗似,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異平项,居然都是意外死亡赫舒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門闽瓢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來接癌,“玉大人,你說我怎么就攤上這事扣讼∪泵停” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵椭符,是天一觀的道長(zhǎng)荔燎。 經(jīng)常有香客問我,道長(zhǎng)艰山,這世上最難降的妖魔是什么湖雹? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮曙搬,結(jié)果婚禮上摔吏,老公的妹妹穿的比我還像新娘。我一直安慰自己纵装,他們只是感情好征讲,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著橡娄,像睡著了一般诗箍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挽唉,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天滤祖,我揣著相機(jī)與錄音,去河邊找鬼瓶籽。 笑死匠童,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的塑顺。 我是一名探鬼主播汤求,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼俏险,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了扬绪?” 一聲冷哼從身側(cè)響起竖独,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎挤牛,沒想到半個(gè)月后莹痢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赊颠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年格二,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竣蹦。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡顶猜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出痘括,到底是詐尸還是另有隱情长窄,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布纲菌,位于F島的核電站挠日,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏翰舌。R本人自食惡果不足惜嚣潜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望椅贱。 院中可真熱鬧懂算,春花似錦、人聲如沸庇麦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)山橄。三九已至垮媒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間航棱,已是汗流浹背睡雇。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饮醇,地道東北人入桂。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像驳阎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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

  • Activity 一呵晚、四種形態(tài) 運(yùn)行狀態(tài): 當(dāng) Activity 處于棧的頂層蜘腌,可見,并可與用戶進(jìn)行交互 onRe...
    任教主來也閱讀 1,663評(píng)論 1 10
  • Activity是一個(gè)應(yīng)用組件饵隙,用戶可與其提供的屏幕進(jìn)行交互撮珠。以執(zhí)行撥打電話,拍攝照片金矛,發(fā)送電子郵件或查看地圖等操...
    DanieX閱讀 1,102評(píng)論 0 4
  • 音樂產(chǎn)品體驗(yàn)-樂流:音樂原是自然簡(jiǎn)單的事兒 今天在某新聞?wù)军c(diǎn)上看到關(guān)于“樂流”的報(bào)告芯急,因?yàn)閷?duì)音樂和音樂產(chǎn)品的關(guān)注,...
    Hopstar閱讀 356評(píng)論 0 2
  • ?:帶雙肩包 ?:充電寶?數(shù)據(jù)線 ?:紙巾 ?:一定要穿舒服的鞋子 ?:food 里面太貴啦驶俊! ?:下雨的話 帶雨...
    XiNChEnMaO閱讀 154評(píng)論 0 0
  • 什么叫做救自己呢娶耍?就是忠實(shí)自己的感覺,認(rèn)真做每一件事饼酿,不要煩榕酒,不要放棄,不要敷衍故俐。哪怕寫文章時(shí)標(biāo)點(diǎn)符號(hào)弄清楚想鹰,不要...
    班盟閱讀 351評(píng)論 0 0