Android笔记:调用finish()后不能当即执行onDestroy()的BUG

       项目中使用微博sdk返回时出现当前activity调用了finish()却没法当即执行onDestroy(),排查了很久仍找不到问题源头。百度了下居然还真能经过这方法解决,作个笔记吧。j_0012.gifhtml



在目前项目中(android2.0),发现一个严重BUG。当打开了A,B两个页面的时候,此时当前页面为B,若是在B中调用finish()后,虽然已经回到了A,但B却并无执行onDestroy()方法,只有在手机上按动了某一个按键后,这时才会执行B.onDestroy()。B才会彻底销毁。另:若是按手机自带的返回按钮,却不会出现这种状况。

所以,若是此时在onDestroy()方法有一些操做的话,那么在回到A不进行按键操做的话,B并无及时销毁,因此不会作方法中的这些操做。

通过定位修改后发现,此BUG是因为在AndroidManifest.xml中对A页面设置了android:theme="@android:style/Theme.NoTitleBar"。而B页面并无设置此参数形成的。把B增长此设置后,问题解决。

虽然问题已解决,但一直没有明白未设置android:theme="@android:style/Theme.NoTitleBar"的页面,为何会在finish()后不能立刻调用onDestroy()。按理说二者不该该有什么关联才是。android


参考:http://blog.sina.com.cn/s/blog_5da93c8f0101nrx5.htmlide

相关文章
相关标签/搜索