2012-07-12 66 views
7

我的大部分活动都是从服务器加载动态数据,当页面回到焦点时,无论如何我都会重新加载它。如果我只是要重新加载它们,让它们在周围看起来很浪费,所以如果用户离开页面,我想它们会调用finish()。它令人困惑,如果某些活动可以按下后退按钮,而其他活动则因为我已经对它们调用了finish(),所以我想知道是否它的错误练习只是在用户浏览的所有活动上调用finish() ? (我在每个活动的底部都有一个导航栏,所以后退按钮不是必需的)。或者,更好的做法是不要在任何活动中调用finish(),只是希望它们不要放慢电话速度,操作系统将负责收集它们的垃圾?我不熟悉Android编程,也没有Android手机,所以我不确定这种情况下常见/最佳做法是什么,或者它只是个人品味的问题。在Android中的活动调用finish()的最佳做法?

另外,是否可以指示Android保留活动历史记录,以便后退按钮仍然有效,但是当它们离开时完成()它们,以便它们不会不必要地占用资源?

+3

只是作为一个Android *用户*(你说你没有安卓手机),你提到它可能没有必要使用后退按钮,因为你在每个活动都有一个导航栏。我为一个*总是*使用后退按钮,无论是什么界面,只是出于纯粹的习惯。要记住的东西...祝你好运! – Tom 2012-07-12 20:32:12

回答

6

尽管您可能会重新加载所有数据以返回活动,但拨打finish()仍然没有意义。

当隐藏活动时,他们不使用资源,也没有真正的问题。只要保持原样,然后当用户导航回来时,它将根据需要重新加载它。

在这种状态下,如果需要它们也可以被垃圾收集 - 这一切都是由Android的照顾。

0

在大多数情况下,您不需要(也不应该)调用finish(); Android负责为您管理活动。

如果您需要在用户离开活动时进行清理,可以在各种活动回调中执行此类操作,例如onDestroy()。

如果您还没有这样做,请阅读Android开发人员指南中的Activities

0

除非您确定活动很长时间不会执行,否则您不应该致电finish()。让Android处理如何处理它会更好。将您的清洁代码放入onPause(),并将您的加载代码放入onResume()

相关问题