如何测试为保存/恢复活动的生命周期而构建的代码?

Pen*_*m10 38 lifecycle android android-activity

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

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();
 }
Run Code Online (Sandbox Code Playgroud)

小智 148

如果您在设备上启用了" 开发者选项 ",则可以选择"不保留有助于测试的活动"onRestoreInstanceState().

Android设置面板

  • 这应该是可接受的答案,因为它可以提供可预测的结果(您不必打开随机数量的随机应用程序),并且您不需要安装具有root访问权限的第三方应用程序. (15认同)
  • 不保持活动不会杀死进程 https://youtu.be/SlZVYkhoSq8?t=36m23s (3认同)

Ric*_*lay 13

我们遇到了一个问题,即在长时间不活动后重新启动应用程序会崩溃.我们发现"不要保持活动"没有重现这个问题,但是Background process settings :: No background processes在Dev Settings中(甚至在调试时).


The*_*heo 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,请启用"开发设置">"立即销毁活动".