我需要测试一个活动onDestroy
方法,后跟onCreate
和onRestoreInstanceHandle
。我知道一种方法 - 改变屏幕方向。但是当活动被破坏时还有另一种情况 - 其他应用程序需要资源,并且在某些时候Android决定销毁后台活动。但是,它仍然可以恢复,Bundle
可用。有没有办法模拟这种情况?
答案 0 :(得分:4)
我不确定这个版本的Android是什么版本,但至少在Jelly Bean中,有一个开发人员选项可以让它变得非常简单。在设置→开发者选项下,向下滚动到“应用”部分,然后启用不要保留活动选项。
然后,每当您退出应用程序时(使用“后退”按钮或“主页”按钮),操作系统都会破坏该应用程序的活动,而不是仅暂停并将其置于后台。不过,不要忘记在完成测试时取消设置。
答案 1 :(得分:2)
您可以使用此示例并写入日志OnDestroy称为
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.finish();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.i("test", "OnDestroy is called");
}
答案 2 :(得分:1)
public class MyActivityTests extends ActivityInstrumentationTestCase2<MyActivity> {
public void testLifecycle() {
Activity activity = this.getActivity();
//do stuff to the activity
this.getInstrumentation().callActivityOnStop(activity);
activity = this.getActivity(); // this should call onCreate() and onRestoreInstanceHandle()
// write assertions
}
}
另见: Activity docs,ActivityInstrumentationTestCase2 docs,Instrumentation docs