Android:返回上一个活动而不调用finish()

时间:2009-10-26 11:39:16

标签: android

我有一个带有大量活动的Android应用程序,想到类似于每个页面都是新活动的书。用户可以在每个活动中进行更改,例如突出显示具有不同颜色标记的某些文本等。只要应用程序保持活动状态(我不想/需要记住任何一个),我将记住此信息至关重要。这不是)。据我所知,存储此类信息的最佳机制是通过onSaveInstanceState(Bundle outState)onCreate(Bundle) / onRestoreInstanceState(Bundle),而不是让我们说首选项机制。我唯一的问题是用户可以向后导航到以前的页面(活动),我知道实现这一目的的唯一方法是调用finish()当然会在不调用onSaveInstanceState(Bundle outState)的情况下杀死当前活动,即使它确实称之为,下次我将启动一个表示该页面的活动时,它将是一个全新的实例。所以我的问题是:有没有办法在不调用finish()的情况下返回上一个活动?或者,有更好的方法来保存这些信息吗?也许通过静态变量?

谢谢!

P.S。 我知道我也可以用不同的方式实现我的应用程序,以便不是每个页面都有自己的活动,但这不是我正在寻找的答案。

2 个答案:

答案 0 :(得分:8)

尝试使用带有Intent.FLAG_ACTIVITY_CLEAR_TOP等标志的startActivity()。 你可以在这里阅读全文: http://developer.android.com/reference/android/content/Intent.html#setFlags(int

答案 1 :(得分:2)

我有完全相同的问题,经过我的思考和尝试了很多,恕我直言,我找到了最可行的解决方案。我继承了Activity并添加了一个静态方法来杀死(如果只存在)。所以,不要在活动退出时杀死活动。每当它再次被召唤时我就会杀了它。例如,

MyActivity.killIfExists();
startActivity(new Intent(this, MyActivity.class));

这样,应用程序将始终为单例并使用onSaveInstanceState保存其状态。