Android中调用finish()后不能立即执行onDestroy()的BUG
2017-05-24 17:31
323 查看
原文地址:http://blog.sina.com.cn/s/blog_5da93c8f0101nrx5.html
在目前项目中(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()。按理说两者不应该有什么关联才是。
以上抄的原文,我的解决方法是,把本来在ondestory要处理的事,放到调用finish的地方一起做了
在目前项目中(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()。按理说两者不应该有什么关联才是。
以上抄的原文,我的解决方法是,把本来在ondestory要处理的事,放到调用finish的地方一起做了
相关文章推荐
- Android中调用finish()后不能立即执行onDestroy()的BUG
- Android笔记:调用finish()后不能立即执行onDestroy()的BUG
- 关于Activity调用finish却不立即执行onDestory的困惑
- 调用AsyncTask的excute方法不能立即执行程序的原因分析及改善方案
- 【Android实战】----调用startActivityForResult()后,onActivityResult()立即执行的问题
- Activity调用finish却不立即执行onDestory
- 在 Android 中调用二进制可执行程序(native executable )
- 利用java反射解决 Android系统方法不能调用的情况
- Android调用本机程序执行文件的方法
- 在 Android 中调用二进制可执行程序(native executable )-- 在代码中执行shell命令
- 360发现Android系统存在彩信调用BUG 谷歌称未来将修复
- Control的Invoke和BeginInvoke 是相对于支线线程(因为一般在支线线程中调用,用来更新主线程ui)Invoke立即插入主线程中执行,而BeginInvoke 要等主线程结束才执行
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- 在 Android 中调用二进制可执行程序(native executable )
- Control的Invoke和BeginInvoke 是相对于支线线程(因为一般在支线线程中调用,用来更新主线程ui)Invoke立即插入主线程中执行,而BeginInvoke 要等主线程结束才执行
- error:在调用 SubmitChanges 期间不能执行此操作
- Cygwin 中 调用 Win 命令不能正确执行解决方法
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- 【win32 app调用html方法】解决VS2008中CHtmlView函数OnBeforeNavigate2不能禁止跳转的BUG
- window.setTimeout() 不能立即执行的情况