【问题标题】:Best practices for calling finish() on an activity in android?在android中的活动上调用finish()的最佳实践?
【发布时间】:2012-07-12 20:14:54
【问题描述】:

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

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

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

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

【问题讨论】:

  • 只是作为 Android 用户(您说您没有 Android 手机),您提到可能不需要使用后退按钮,因为每个活动都有一个导航栏。我为一个总是使用返回按钮,无论界面如何,只是出于习惯。需要记住的一点......祝你好运!

标签: android android-activity


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多