每当我将Nexus从纵向旋转到横向或从横向旋转到纵向时,我的应用程序都会崩溃.它产生下面的异常报告,我不明白.
我基本上做了它所说的,发现我的主要活动onDestroy功能并添加了super.onDestroy,这使问题消失了.
但是,为什么会这样呢?为什么onDestroy只是因为我旋转了平板电脑才开始发挥作用?
02-18 00:43:28.504 28259-28259/com.mpr.myfirstapp E/AndroidRuntime? FATAL EXCEPTION: main
Process: com.mpr.myfirstapp, PID: 28259
android.util.SuperNotCalledException: Activity {com.mpr.myfirstapp/com.mpr.myfirstapp.MainActivity} did not call through to super.onDestroy()
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3660)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3689)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3889)
at android.app.ActivityThread.access$900(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5223)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Run Code Online (Sandbox Code Playgroud)
打开AndroidManifest.xml并将此属性添加到您的活动中:
<activity android:name=".YourActivityName" android:configChanges="orientation|screenSize|keyboardHidden" />
Run Code Online (Sandbox Code Playgroud)
在没有添加orientation值的情况下旋转屏幕时,可能会重新创建活动.
这个问题的答案可以在这里找到:
http://developer.android.com/guide/topics/resources/runtime-changes.html
您遇到的实际上是Android活动的默认行为.当方向发生变化时,与活动相关的资源可能会发生变化并需要进行管理.这些情况通常使用onSaveInsatanceState()和onRestoreInstanceState()方法处理,它们的用法在文档中突出显示.