如何测试以下所有方法代码?我想在所有这些场景发生时播放场景,看看我的代码是否适用于活动的保存/恢复过程。那么我应该在模拟器中做些什么来测试所有方法?
public class Activity extends ApplicationContext {
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onRestoreInstanceState(Bundle savedInstanceState);
protected void onSaveInstanceState(Bundle savedInstanceState);
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
答案 0 :(得分:144)
答案 1 :(得分:13)
我们遇到了一个问题,即在长时间不活动后重新启动应用程序会崩溃。我们发现"不要保持活动"没有重现这个问题,但Dev Settings中的Background process settings :: No background processes
确实存在(即使在调试时)。
答案 2 :(得分:8)
要测试onSaveInstanceState和onRestoreInstanceState,您可以使用SetAlwaysFinish工具(请参阅下面的链接)或模拟器附带的DevTools应用程序。
这两个应用程序都使用名为AlwaysFinish的隐藏设置,它是ActivityManagerNative类的一部分,用于更改Android操作系统的行为。在新行为下,操作系统将在离开屏幕后立即卸载任何活动,从而触发onSaveInstanceState事件。当操作系统想要恢复活动时,它将调用onRestoreInstanceState事件。
上面的链接解释了如何使用SetAlwaysFinish应用程序来测试应用程序的onSaveInstanceState和onRestoreInstanceState事件。如果要使用DevTools,请启用开发设置>立即摧毁活动。
答案 3 :(得分:6)
onCreate
,onStart
和onResume
将会运行,无需进一步的交互。退出时会运行onPause
,onStop
和onDestroy
,例如反复按“返回”按钮。
要在启动应用程序后测试onRestart
,onSaveInstanceState
和onRestoreInstanceState
,请尝试按主页按钮,启动其他一些应用程序以确保您的活动将被终止,然后启动您的应用程序试。
使用日志记录检查方法是否已被调用。
(活动生命周期文档:http://developer.android.com/guide/topics/fundamentals.html#actlife)
答案 4 :(得分:2)
还有另一种测试这些事件的方法。首先,您必须导航到要测试的特定活动,然后按主页按钮并转到Android设备监视器。
在此工具中,您可以选择应用程序的线程并使用停止按钮将其终止。 最后,您必须从历史记录中打开应用程序,线程将再次重新创建。
答案 5 :(得分:1)
Android提供的测试工具现在提供了一种编写测试的方法,该测试可以将活动从一种状态驱动到另一种状态,或者重新创建活动以测试保存和还原流程。有关功能列表,请参见Test your app's activities Android开发者文档页面。从该页面获取的语法示例如下:
@RunWith(AndroidJUnit4::class)
class MyTestSuite {
@Test fun testEvent() {
val scenario = launchActivity<MyActivity>()
scenario.moveToState(State.CREATED)
}
}