51

如何测试以下所有方法代码?我想在所有场景都发生时播放场景,以查看我的代码是否适用于活动的保存/恢复过程。那么我应该在模拟器中做什么来测试所有方法呢?

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();
 }
4

5 回答 5

169

如果您在设备上启用了开发人员选项,则有一个选项不要保留有助于测试的活动onRestoreInstanceState()

安卓设置面板

于 2013-10-27T19:48:17.323 回答
18

我们遇到了一个问题,即在长时间不活动后重新启动应用程序会崩溃。我们发现“不保留活动”并没有重现问题,但Background process settings :: No background processes在开发设置中重现了(即使在调试时)。

于 2014-11-20T22:49:08.843 回答
8

要测试 onSaveInstanceState 和 onRestoreInstanceState,您可以使用 SetAlwaysFinish 工具(请参阅下面的链接)或模拟器附带的 DevTools 应用程序。

http://bricolsoftconsulting.com/how-to-test-onsaveinstancestate-and-onrestoreinstancestate-on-a-real-device/

这两个应用程序都使用一个名为 AlwaysFinish 的隐藏设置,它是 ActivityManagerNative 类的一部分,用于更改 Android 操作系统的行为。在新行为下,操作系统将在离开屏幕后立即卸载任何活动,触发 onSaveInstanceState 事件。当操作系统想要恢复活动时,它会调用 onRestoreInstanceState 事件。

上面的链接说明了如何使用 SetAlwaysFinish 应用程序来测试您的应用程序的 onSaveInstanceState 和 onRestoreInstanceState 事件。如果你想使用 DevTools,那么启用 Development Settings > Immediately destroy activity。

于 2011-12-24T00:27:28.027 回答
4

还有另一种方法可以测试这些事件。首先,您必须导航到要测试的特定活动,然后按主页按钮并转到 Android 设备监视器。

Android 设备监控位置

Android 设备监视器示例

在此工具中,您可以选择应用程序的一个线程并使用停止按钮将其终止。最后,您必须从历史记录中打开应用程序,然后将再次重新创建线程。

于 2017-12-27T17:17:06.537 回答
4

Android 提供的测试工具现在提供了一种编写测试的方法,可以将 Activity 从一种状态驱动到另一种状态,或者重新创建 Activity 以测试保存和恢复流程。有关功能列表,请参阅测试您的应用程序的活动Android 开发者文档页面。语法示例(取自该页面)如下:

@RunWith(AndroidJUnit4::class)
class MyTestSuite {
    @Test fun testEvent() {
        val scenario = launchActivity<MyActivity>()
        scenario.moveToState(State.CREATED)
    }
}
于 2020-08-18T09:41:08.033 回答