Android 模拟活动/片段重新创建

Android 模拟活动/片段重新创建,android,android-activity,android-fragments,android-lifecycle,Android,Android Activity,Android Fragments,Android Lifecycle,我试图模拟活动和片段重新创建,并检查onSaveInstancestate()和onRestoreInstanceState(),通常检查我是否在所有情况下都以良好的方式处理活动重新创建,例如,就像屏幕旋转导致活动自行重新创建一样 但在我的情况下,我想检查更多可能导致重新创建的选项/案例,因为我的应用程序无法旋转(所有活动都是纵向的) 我看到了很多关于这个话题的文章、博客和问答,例如 正如上面所说的 还有更多的事件会导致活动重新创建,所以在我阅读之后,我想测试一下我的应用程序中的一些事件 例如,

我试图模拟
活动
片段
重新创建,并检查
onSaveInstancestate()
onRestoreInstanceState()
,通常检查我是否在所有情况下都以良好的方式处理活动重新创建,例如,就像屏幕旋转导致活动自行重新创建一样

但在我的情况下,我想检查更多可能导致重新创建的选项/案例,因为我的应用程序无法旋转(所有活动都是纵向的)

我看到了很多关于这个话题的文章、博客和问答,例如

正如上面所说的 还有更多的事件会导致活动重新创建,所以在我阅读之后,我想测试一下我的应用程序中的一些事件

例如,我在“活动”中按下“主页”按钮,然后进入“设置”并尝试更改语言、字体大小等,但这些动作中没有一个像我预期的那样让我的应用程序重新创建。 当我返回到我的应用程序时,它刚刚恢复,并且从未调用过
onCreate()。
所以我甚至查了一下关于这件事的报告。他们还说这会让我的活动重新创造:引用:

"When a configuration change occurs at runtime, the activity is shut down and restarted by default" 
但正如我所说,这件事并没有发生在我身上

这对我来说是巨大的,因为我非常幼稚,认为如果我的应用程序将仅以肖像形式出现,或者如果我将添加到清单中,这一行:

android:configChanges="keyboardHidden|orientation|screenSize"

然后一切都会好起来,显然不是因为有更多的配置更改可以重新启动我的活动,因此,我无法再从它运行,我想以一种良好的方式处理它,现在我还想测试它。

您说过,当您在应用程序中更改设备方向时,它不会被重新创建。通常会。当您添加行时,
android:configChanges=“orientation”
意味着您告诉系统您将在应用程序中处理方向更改,而不必担心正常行为

如果将其从清单中的活动声明中删除,您将看到它按预期运行(在方向更改时销毁/重新创建)


希望这能有所帮助。

按home(主页)按钮只会在开始时引发
onPause
。您的
活动
将不会再次执行
onCreate
,直到它被完全销毁,除非Android决定它需要用于其他进程的内存,否则这种情况不会发生

最简单的方法就是从
configChanges
中删除
方向
,然后旋转
活动
,看看会发生什么。布局可能无法正常工作,但您应该能够检查您的生命周期代码。同样,移除
键盘隐藏
,然后切换软键盘。您的
活动应该经历生命周期序列

更改设备的区域设置将导致重新创建您的
活动。请注意,这是需要更改的全局区域设置,而不是键盘输入的语言


我想到了其他方法,比如通过手机上的按键顺序手动销毁应用程序(例如,按住Home按钮,然后向左滑动应用程序,在某些手机上杀死应用程序),或者通过从调试器终止它。

更改设备语言是强制重新创建不涉及方向更改的所有活动的一种方法。

您如何断言您的活动是否调用了onCreate?调试?Logcat?Logcat-当我按下home按钮时,会调用onPause()->onStop()。在我的测试之后(不管是哪一个,例如,将字体大小从常规更改为巨大),我长按home按钮,然后按我的应用程序,然后再按onRestart()->onStart()->onResume()被称为你不明白我写了什么或者我不清楚,但我说我是故意这样做的,这样就不会有任何定向,这样我的活动就不会重新启动/重新创建,但在阅读了有关该问题的资料后,我发现还有更多的案例可以重新创建/重新启动我的活动-请再次阅读我写的内容,看看我想要的是模拟更多导致活动重新创建/重新启动的配置更改案例,不包括方向更改。我想模拟更多导致活动重新创建/重新启动的配置更改情况,不包括方向更改。我还试图更改设备语言,但它没有重新创建我的活动。你写道:“……除非Android决定它需要其他进程的内存,否则这不会发生”,但这是不正确的,因为正如Android所说,还有更多的情况会导致活动重新创建。看这里,如果我按住home(主页)按钮,然后向左滑动我的应用程序,它将破坏进程和我的应用程序。我还可以使用DDMS工具模拟Android由于内存丢失而删除我的应用程序,请阅读以下内容:。我也可以使用开发人员工具来模拟,但我在问题中已经描述过,这不是我想要模拟的。配置更改会导致
活动
经历
onDestry()
onCreate()
生命周期。不管它是由方向、区域设置还是手动终止应用程序引起的,它们都会对您的
活动产生完全相同的影响。您不需要,也不可能,测试每一个可能的配置更改。我知道,我只想要一个,不包括oriantation更改。还有为什么它不像android官方文档所说的那样工作。例如,他们说更改字体大小应该重新启动活动。