Android onPause问题

时间:2012-10-19 16:50:00

标签: android

我的应用程序中有一个搜索功能,我有一个名为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活动中调用什么,以便当您重新启动应用程序时,它会重新启动,而不会在搜索页面上恢复?

1 个答案:

答案 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上杀死它会更干净。