項(xiàng)目中使用微博sdk返回時(shí)出現(xiàn)當(dāng)前activity調(diào)用了finish()卻無法立即執(zhí)行onDestroy(),排查了好久仍找不到問題源頭。百度了下竟然還真能通過這方法解決,做個(gè)筆記吧。
創(chuàng)新互聯(lián)建站是一家專業(yè)提供東區(qū)企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、H5頁(yè)面制作、小程序制作等業(yè)務(wù)。10年已為東區(qū)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
在目前項(xiàng)目中(android2.0),發(fā)現(xiàn)一個(gè)嚴(yán)重BUG。當(dāng)打開了A,B兩個(gè)頁(yè)面的時(shí)候,此時(shí)當(dāng)前頁(yè)面為B,如果在B中調(diào)用finish()后,雖然已經(jīng)回到了A,但B卻并沒有執(zhí)行onDestroy()方法,只有在手機(jī)上按動(dòng)了某一個(gè)按鍵后,這時(shí)才會(huì)執(zhí)行B.onDestroy()。B才會(huì)完全銷毀。另:如果按手機(jī)自帶的返回按鈕,卻不會(huì)出現(xiàn)這種情況。
因此,如果此時(shí)在onDestroy()方法有一些操作的話,那么在回到A不進(jìn)行按鍵操作的話,B并沒有及時(shí)銷毀,所以不會(huì)做方法中的這些操作。
經(jīng)過定位修改后發(fā)現(xiàn),此BUG是由于在AndroidManifest.xml中對(duì)A頁(yè)面設(shè)置了android:theme="@android:style/Theme.NoTitleBar"。而B頁(yè)面并沒有設(shè)置此參數(shù)造成的。把B增加此設(shè)置后,問題解決。
雖然問題已解決,但一直沒有明白未設(shè)置android:theme="@android:style/Theme.NoTitleBar"的頁(yè)面,為什么會(huì)在finish()后不能馬上調(diào)用onDestroy()。按理說兩者不應(yīng)該有什么關(guān)聯(lián)才是。
參考:http://blog.sina.com.cn/s/blog_5da93c8f0101nrx5.html