2012-03-27 36 views
2

我知道finish()会将您的活动返回到以前的活动。现在,我很好奇,如果我们能够完成相反的意义,转回到下一个没有实施Intent的活动。这只是一个好奇心问题。完成相反()

这可能吗?

+0

我不这么认为。我认为在完成之后,GC的维护行为已经结束,并且已经结束。你应该保持自己的活动。 – mihail 2012-03-27 20:36:44

回答

4

否。当用户按下“返回”按钮时,由于调用finish()而导致“您未执行意图而退回的下一个活动”被销毁,因此您无法返回。

+0

好的答案谢谢 – sdfwer 2012-03-27 20:42:32

3

不,这是不可能的,一旦你运行完成()(或后退)一个活动,它将从活动堆栈中移除,并收集其内容垃圾,只有通过启动才能达到的方式与和意图。

2

简短回答:不,因为完成()的活动已被破坏。

龙答:从Activity Documentation

的onDestroy() - 您在活动前收到的最后通话是 销毁。发生这种情况是因为该活动结束 (有人叫光洁度()就可以了,或者是因为系统暂时 破坏活动的这种情况下,以节省空间。

调用完成()实际上并不保证活动的即时GC,但是在完成调用之后不久,您可以认为活动实例中的任何内容都没有保留。不要持有对Android说的活动的引用应该是killable,每Activity LifecycleAvoiding Memory Leaks,这是不是一个方法来解决这个问题,并且是一个坏主意(tm)。

你可以重写OnDestroy()并检查isFinishing()是否想要将活动历史记录存储在应用程序中,以便您可以手动实现诸如“forward”功能之类的内容,但通常情况下,最好在onSaveInstanceState() 。

0

不,因为一旦你调用finish()方法,它会破坏相应的活动。伴随你的任务的唯一方法是使用一个intent。