莫名其妙的横竖屏切换导致phone进程崩溃

来源:互联网 发布:java 设置中奖率 编辑:程序博客网 时间:2024/05/23 23:20

在搞国际漫游的时候有一个phone进程崩溃的问题困扰我了很久,终端恢复出厂设置后第一次打开国际漫游界面,禁用卡一,直接弹出phone崩溃,异常如下:

02-14 16:34:24.391 E/AndroidRuntime(  999): java.lang.IllegalStateException: Fragment RoamingSettingsFragmet{4184e2d8} not attached to Activity
02-14 16:34:24.391 E/AndroidRuntime(  999): at android.app.Fragment.getResources(Fragment.java:762)
02-14 16:34:24.391 E/AndroidRuntime(  999): at android.app.Fragment.getString(Fragment.java:784)
02-14 16:34:24.391 E/AndroidRuntime(  999): at com.qualcomm.roamingsettings.RoamingSettingsFragmet$1.handleMessage(RoamingSettingsFragmet.java:227)
02-14 16:34:24.391 E/AndroidRuntime(  999): at android.os.Handler.dispatchMessage(Handler.java:99)
02-14 16:34:24.391 E/AndroidRuntime(  999): at android.os.Looper.loop(Looper.java:137)
02-14 16:34:24.391 E/AndroidRuntime(  999): at android.app.ActivityThread.main(ActivityThread.java:5136)
02-14 16:34:24.391 E/AndroidRuntime(  999): at java.lang.reflect.Method.invokeNative(Native Method)
02-14 16:34:24.391 E/AndroidRuntime(  999): at java.lang.reflect.Method.invoke(Method.java:525)
02-14 16:34:24.391 E/AndroidRuntime(  999): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
02-14 16:34:24.391 E/AndroidRuntime(  999): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
02-14 16:34:24.391 E/AndroidRuntime(  999): at dalvik.system.NativeStart.main(Native Method)

从异常上看是一个对话框失去了附着的activity后报出的问题,但从未有代码让activity销毁啊,何来的失去呢?

为了找到问题所在,我把fragment的生命周期函数都打上入口日志看了一下,呵!果然,在弹出对话框后,fragment所在的activity被销毁后重建了两遍,两遍啊!

怀疑是不明原因导致activity发生了横竖屏切换,这样activity重建了两遍就说的过去了:把原来的销毁,创建横屏,再创建竖屏,然后一切像什么都没发生过一样。。。

禁止横竖屏切换网上有现成了,直接拿来用:

android:configChanges="orientation"
        android:screenOrientation="portrait"

这两句直接放到AndroidManifest.xml中activity的配置项里,搞定!

0 0
原创粉丝点击