我的大部分活动都是从服务器加载动态数据,当页面重新聚焦时,无论如何我都会重新加载它。如果我只是要重新加载它们,那么保持它们似乎是浪费的,所以我想如果用户离开页面就调用它们上的finish()。
令人困惑的是,如果有些活动你可以按后退按钮去和其他人没有因为我已经对他们调用了finish(),所以我想知道它是不是很糟糕的做法只是在所有活动上调用finish()用户导航离开? (我在每个活动的底部都有一个导航栏,因此不需要后退按钮)。或者,更好的做法是不要在任何活动上调用finish(),只是希望他们不要放慢手机的速度,操作系统会处理垃圾收集它们?
我是Android编程的新手,并且没有Android手机,所以我不确定这种情况下的常见/最佳做法是什么,或者只是个人问题味道。
此外,是否可以指示Android保留活动历史记录以使后退按钮仍然有效,但是当它们离开时完成()它们以便它们不会不必要地占用资源?
答案 0 :(得分:6)
虽然您可以重新加载返回活动的所有数据,但仍然没有必要致电finish()
。
当隐藏活动时,他们不使用资源,并且没有真正的问题。只需将它们保留原样,然后当用户导航回来时,它将根据需要重新加载它。
在这种状态下,如果需要,它们也可以被垃圾收集 - 这完全由android来处理。
答案 1 :(得分:0)
在大多数情况下,您不需要(也不应该)调用finish(); Android负责管理您的活动。
如果您需要在用户离开活动时进行清理,您可以在各种活动回调中执行此类操作,例如onDestroy()。
如果您尚未这样做,请阅读Android开发者指南中的Activities。
答案 2 :(得分:0)
除非您确定活动不会在很长时间内执行,否则不应致电finish()
。最好让Android处理它的用途。将您的清洁代码放在onPause()
中,将加载代码放在onResume()
。