我有一个活动A,上面有一个按钮,当点击它导航到活动B.现在从这个活动B按下后退按钮我回到活动A这是非常明显的。但是当我点击活动A上的按钮时,再一次启动了活动B的新实例。
我的查询:有没有办法,当我按下活动B上的后退按钮时,它的实例被存储,所以当我再次单击活动A上的按钮时,将启动已保存的B实例而不是新实例。 / p>
希望找到解决方案..
答案 0 :(得分:0)
如果您不想传递数据..或者只想返回上一个活动
finish() in onClick
答案 1 :(得分:0)
http://developer.android.com/reference/android/app/Activity.html
此外,在将活动置于这样的背景状态之前调用onSaveInstanceState(Bundle)方法,允许您将活动中的任何动态实例状态保存到给定的Bundle中,以便稍后在onCreate(Bundle)中接收如果需要重新创建活动。
答案 2 :(得分:0)
认为处理它并不容易。 android中的活动可以存储,但是当你导航到活动B时,你无法调用android系统来使用你的实例。
阅读此链接http://developer.android.com/reference/android/app/Activity.html
它提供了你可以用它做的所有信息,但不是你想要的全部信息。
当你从活动B导航到活动A时,android本身已经将你的活动B的实例临时存储在内存中,并且该实例将在以后的任何时候完全销毁。如果再次将其从A导航到B,那么如果活动B的实例仍然存在于内存中,则它将再次重用,否则它将再次重新创建活动。在任何情况下,活动B都是重用或重新创建,onCreate方法总是被调用(生命周期中的所有方法,如onResume ...等),然后活动B的所有数据现在都是新数据,而不是旧数据,然后再导航到活动A.这就是android系统所做的事情,因此你不能在不调用这些方法的情况下启动活动B.
如果您希望活动B看起来像导航到活动A之前一样,您应该在活动B上的方法onPause()中保存必要的数据,然后在调用时将这些数据设置回活动B的组件的onCreate()。在这种情况下不应该使用onSaveInstanceState(Bundle)方法,因为没有调用那个方法之前的那个在android(3.0)之前的android os版本。
如果您正在使用在线数据或listview,webview等,这可能很难处理,并且您自己也可以保存数据,这可能会给您的应用程序带来风险。
无论如何,我希望这对你有所帮助。