0

我的应用程序中有一个搜索功能,我有一个名为 SearchPage2.java 的搜索活动,还有另一个活动 (SearchTaDa.java),它在单击列表项时显示更多信息。我发现我无法在 SearchPage2.java 中调用finish()onPause()因为我希望 ListView 在您按下 SearchTaDa.java 中的软件后退按钮(或硬件后退按钮)时仍然可见。但是因为我没有finish()在 SearchPage2.java 中调用,所以当您按下硬件主页按钮退出应用程序,然后重新启动应用程序时,它会直接返回 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 活动中调用什么,以便当您重新启动应用程序时它会重新开始,并且不会在搜索页面恢复?

4

1 回答 1

0

设置全局标志“destroyOnResume”,如果设置了标志,则调用 finish onResume 。

更详细:

在代码中的某处,您确定 SearchPage2Activity 是否应该在下次调用时完成并调整您的标志,该标志位于代码中的某处,例如作为全局成员......

public static boolean destroySearchPage2OnResume = false;

或将其放入您的SharedPreferences中,即使在应用程序被杀死时也能坚持这一点。

在 SearchPage2.java 中,您覆盖 onResumeMethod,当您的应用程序进入后台时,该方法在 onRestart() 或 onPause() 之后被调用。如果您的标志设置为 true,您将立即完成 SearchPage2 活动。

@Override
protected void onResume () {
   super.onPause();
   if(destroySearchPage2OnResume){
   this.finish();
   }  
}

顺便说一句,用no-history-flag调用你的活动会更干净,而不是在暂停时杀死它......

于 2012-10-19T17:00:02.683 回答