2

我有一个 Activity A,上面有一个按钮,单击该按钮导航到 Activity B。现在,当按下后退按钮时,我从这个 Activity B 回到 Activity A,这很明显。但是,当我再次单击 Activity A 上的按钮时,将启动 Activity B 的新实例。

我的查询:有没有办法让我按下活动 B 上的后退按钮时,它的实例被存储,所以当我再次单击活动 A 上的按钮时,将启动保存的 B 实例而不是新实例。

希望有解决办法。。

4

3 回答 3

0

如果您不想传递数据..或者只是想回到以前的活动

finish()  in onClick
于 2012-04-21T13:21:16.710 回答
0

http://developer.android.com/reference/android/app/Activity.html

此外,方法 onSaveInstanceState(Bundle) 在将 Activity 置于此类后台状态之前被调用,允许您将 Activity 中的任何动态实例状态保存到给定的 Bundle 中,以便稍后在 onCreate(Bundle) 中接收该 Activity需要重新创建。

于 2012-04-21T13:21:21.570 回答
0

想一想,处理起来并不容易。可以存储 android 中的活动,但是当您导航到活动 B 时,您不能调用 android 系统来使用您的该实例。

阅读此链接http://developer.android.com/reference/android/app/Activity.html

它提供了你可以用它做的所有信息,但不是你想要的所有信息。

当您从活动 B 导航到活动 A 时,android 本身已将您的活动 B 的实例临时存储在内存中,并且该实例将在以后的任何时候完全销毁。如果您再次将它从 A 导航到 B,那么如果 Activity B 的实例仍然存在于内存中,它将再次被重用,否则它会再次重新创建该 Activity。在任何情况下,活动 B 被重用或重新创建,始终调用 onCreate 方法(生命周期中的所有方法,如 onResume ...等)然后您的活动 B 的所有数据现在都是新数据,在您导航之前不是旧数据活动 A。这是 android 系统所做的,因此如果不调用这些方法,您将无法启动活动 B。

如果您希望活动 B 看起来与导航到活动 A 之前相同,您可能应该在活动 B 的 onPause() 方法中保存必要的数据,然后在调用 onCreate() 时将这些数据设置回活动 B 的组件. 在这种情况下不应使用 onSaveInstanceState(Bundle) 方法,因为蜂窝(3.0)之前的 android os 版本没有调用该方法。

如果您使用在线数据或列表视图、webview 等,并且您自己保存数据,这可能很难处理,这可能会给您的应用程序本身带来风险。

无论如何,我希望这对您有所帮助。

于 2012-04-21T14:24:15.640 回答