8

我的大多数活动都从服务器加载动态数据,当页面重新成为焦点时,我无论如何都会重新加载它。如果我只是要重新加载它们,保留它们似乎很浪费,所以如果用户离开页面,我想在它们上调用 finish()。

如果某些活动您可以按后退按钮转到而其他活动则不能,因为我已经在它们上调用了finish(),所以我想知道是否只是在用户导航离开的所有活动上调用finish()是不好的做法? (我在每个活动的底部都有一个导航栏,因此不需要返回按钮)。或者,最好不要在任何活动上调用finish(),只希望它们不会减慢手机速度,并且操作系统会处理垃圾收集它们?

我是 Android 编程新手,并且没有 Android 手机,所以我不确定在这种情况下常见/最佳做法是什么,或者这只是个人喜好问题。

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

4

3 回答 3

6

虽然您可以在返回活动时重新加载所有数据,但调用finish().

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

在这种状态下,如果需要,它们也可以被垃圾收集——这一切都由 android 负责。

于 2012-07-12T20:20:43.210 回答
0

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

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

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

于 2012-07-12T20:21:55.353 回答
0

finish()除非您确定该活动不会在很长一段时间内执行,否则您不应调用。最好让Android处理它的处理方式。将您的清洁代码onPause()和加载代码放入onResume().

于 2012-07-12T20:22:19.453 回答