在android中从一个活动转到另一个活动时释放所有资源

时间:2012-03-10 04:50:17

标签: android android-activity

在说明新意图之前,通过调用finish()来完成当前活动,取消分配当前类的所有资源吗?

我在类(或活动)中使用inputstream。但是在没有关闭输入流(connection.close())的情况下,我在调用当前活动的finish()后开始一个新的活动。但是,如果在上一个活动中未调用connetion.close()方法,则无法从新活动中的服务器获取任何输入流。

有没有办法在转移到新活动之前释放当前活动的所有资源(因为finish()似乎没有工作)。

2 个答案:

答案 0 :(得分:5)

不同之处在于活动认为onPause应该在“销毁”视图之前完成执行,而onStop是在视图已经在后台之后的生命周期阶段 - 意味着活动不再可见。

在onPause中执行操作可以确保您需要保存的项目在放弃之前仍然完好无损 - 例如,您需要将文本保存在EditText中,或者放在RadioButtons的开/关位置等。

然而,

解除分配不再需要这些东西,所以如果你在onStop中这样做会很好

答案 1 :(得分:0)

您不应该保持输入流的打开时间长于需要它们的上下文。如果您发现自己处于无法自行清理的情况下,可以覆盖完成并在那里进行清理。请务必在完成之前致电super.finish()

PS:I am starting a new activity after calling finish()

这不典型。通常会有人开始新活动,然后拨打finish()。也许这就是咬你的东西。