小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

android onnewintent()函數(shù)的使用

 風(fēng)雪夜歸人_95 2015-01-22
    今天在編程的時(shí)候,遇到這樣的情況,一個(gè)Activity A跳轉(zhuǎn)到另一個(gè)Activity B(Activity A并沒(méi)有被finish掉),B處理完后,將一些值通過(guò)Intent重新傳回給Activity A。在這里筆者并沒(méi)有使用startActivityforResult函數(shù),而是簡(jiǎn)單地使用startActivity函數(shù)。并且Activity A在Androidmanifest.xml文件中將啟動(dòng)模式設(shè)置為“singleTask”。但是,再次回到Activity A時(shí)使用Intent獲取B傳過(guò)來(lái)的值時(shí)無(wú)法獲取。不知道是什么原因。因?yàn)樵俅位氐紸時(shí),不會(huì)執(zhí)行onCreate()函數(shù),所有把從Intent中獲取值的過(guò)程放到了onResume()函數(shù)中。http://www.ahfyzs.com/writeart3.aspx
    經(jīng)過(guò)網(wǎng)上的查詢,在A中添加了onnewintent()函數(shù),問(wèn)題得到解決:
  onNewIntent(Intent intent) {
   .onNewIntent(intent);  
   setIntent(intent);
}

下面具體來(lái)分析一下邏輯。
第一次創(chuàng)建Activity A時(shí),執(zhí)行的邏輯順序是:onCreate() --->onStart()--->onResume()。
而如果使用“singleTask”模式第二次啟動(dòng)Activity A,且A處于任務(wù)棧的頂端,則執(zhí)行的邏輯順序是:
onNewIntent() ---> onRestart() --->onStart() ---> onResume()。
通過(guò)Intent來(lái)再次啟動(dòng)A時(shí),由于系統(tǒng)已經(jīng)存在一個(gè)實(shí)例,喜用就會(huì)將請(qǐng)求發(fā)送到這個(gè)實(shí)例上。此時(shí),系統(tǒng)不會(huì)再調(diào)用通常情況下處理請(qǐng)求數(shù)據(jù)的onCreate()方法,而是調(diào)用onNewIntent()方法。

所以,如果遇到了和我上面類似的問(wèn)題,一個(gè)辦法就是在onCreate()函數(shù)和onNewIntent方法中嗲用相同的處理數(shù)據(jù)的方法:
   onCreate(Bundle savedInstanceState) {
   .onCreate(savedInstanceState);
   setContentView(R.layout.main);
   Intent intent = getIntent();
   ......
 }

  onNewIntent(Intent intent) {
   .onNewIntent(intent);
   setIntent(intent);   Intent intent = getIntent();
   ......
 }

當(dāng)然,你也可以把二者相同的處理放到onResume()函數(shù)中,反正后面都要調(diào)用這個(gè)函數(shù),避免同樣的代碼寫(xiě)2次。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多