【发布时间】:2014-11-07 15:59:36
【问题描述】:
我正在尝试模拟 Activity 和 Fragment 重新创建并检查 onSaveInstancestate() 和 onRestoreInstanceState() 并且通常检查我是否在所有情况下都以良好的方式处理活动重新创建,因为例如,就像屏幕旋转导致 Activity 自行重新创建一样。
但就我而言,我想检查更多可能导致重新创建的选项/案例,因为我的应用无法旋转(所有活动都是纵向的)。
我看到了很多关于这个主题的文章、博客和 stackoverflow 问题/答案,例如 here, here, 和 here.
正如这个stackoverflow的回答所说Why not use always android:configChanges="keyboardHidden|orientation"? 还有更多的事件会导致 Activity 重新创建,所以在我阅读完之后,我想测试我的应用中的一些事件。
例如,我在我的活动中按下主页按钮,然后我进入设置并尝试更改语言、更改字体大小等...,但这些操作都没有让我的应用程序像我一样重新创建预计。
当我回到我的应用程序时,它刚刚恢复,onCreate() 从未调用过。
所以我什至检查了official documents 关于这个。他们还说它应该导致我的活动重新创建:引用:
"When a configuration change occurs at runtime, the activity is shut down and restarted by default"
但正如我所说,这并没有发生在我身上。
这对我来说是巨大的,因为我非常天真,并认为如果我的应用程序仅是纵向的,或者我是否会在清单中添加这一行:
android:configChanges="keyboardHidden|orientation|screenSize"
那么一切都会好起来的,显然不是因为有更多的配置更改可以重新启动我的活动,所以我不能再从它运行,我想以良好的方式处理它,现在我想也测试一下。
【问题讨论】:
-
您如何断言您的活动已调用或未调用 onCreate?调试?日志猫?
-
Logcat - 当我按下主页按钮时,会调用 onPause() -> onStop()。在我的测试之后(无论是哪一个,例如,将字体大小从常规更改为大),我长按主页按钮,然后按下我的应用程序,然后调用 onRestart() -> onStart() -> onResume()
标签: android android-activity android-fragments android-lifecycle