在说明新意图之前,通过调用finish()
来完成当前活动,取消分配当前类的所有资源吗?
我在类(或活动)中使用inputstream。但是在没有关闭输入流(connection.close()
)的情况下,我在调用当前活动的finish()
后开始一个新的活动。但是,如果在上一个活动中未调用connetion.close()
方法,则无法从新活动中的服务器获取任何输入流。
有没有办法在转移到新活动之前释放当前活动的所有资源(因为finish()
似乎没有工作)。
答案 0 :(得分:5)
不同之处在于活动认为onPause应该在“销毁”视图之前完成执行,而onStop是在视图已经在后台之后的生命周期阶段 - 意味着活动不再可见。
在onPause中执行操作可以确保您需要保存的项目在放弃之前仍然完好无损 - 例如,您需要将文本保存在EditText中,或者放在RadioButtons的开/关位置等。
然而,解除分配不再需要这些东西,所以如果你在onStop中这样做会很好
答案 1 :(得分:0)
您不应该保持输入流的打开时间长于需要它们的上下文。如果您做发现自己处于无法自行清理的情况下,可以覆盖完成并在那里进行清理。请务必在完成之前致电super.finish()
。
PS:I am starting a new activity after calling finish()
这不典型。通常会有人开始新活动,然后拨打finish()
。也许这就是咬你的东西。