我的应用程序中有一个搜索功能,我有一个名为SearchPage2.java的搜索活动,还有另一个活动(SearchTaDa.java),它在单击列表项时显示更多信息。我发现我无法在SearchPage2.java中的finish()
中调用onPause()
,因为当您从SearchTaDa按下我的软件后退按钮(或硬件后退按钮)时,我希望ListView仍然可见的.java。但是因为我没有在SearchPage2.java中调用finish()
,当您按下硬件主页按钮退出应用程序,然后重新启动应用程序时,它会立即返回到SearchPage2活动,而不是从启动时重新启动应用程序屏幕,应用程序的开头。所以SearchPage2 onPause看起来像:
@Override
protected void onPause() {
super.onPause();
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
}
和更多信息活动,SearchTaDa.java onPause看起来像:
@Override
protected void onPause() {
super.onPause();
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
finish();
}
我的问题是我可以在SearchPage2活动中调用什么,以便当您重新启动应用程序时,它会重新启动,而不会在搜索页面上恢复?
答案 0 :(得分:0)
设置全局标志“destroyOnResume”,如果设置了标志,则调用finish onResume。
更详细:
在代码中的某处,您可以确定SearchPage2Activity是否应在下次调用时完成并调整您的标志,该标志位于代码中的某个位置,例如作为全局成员......
public static boolean destroySearchPage2OnResume = false;
或将其放入SharedPreferences即使应用程序被杀死也能保持这种状态。
在SearchPage2.java中,您将覆盖onResumeMethod,当您的应用程序进入后台时,onRestartMethod会在onRestart()或onPause()之后调用。如果您的标志设置为true,则立即完成SearchPage2活动。
@Override
protected void onResume () {
super.onPause();
if(destroySearchPage2OnResume){
this.finish();
}
}
顺便说一下,用no-history-flag调用你的活动而不是在onPause上杀死它会更干净。