【问题标题】:Calling onCreate in onResume issue在 onResume 问题中调用 onCreate
【发布时间】:2014-01-18 19:15:18
【问题描述】:

我已经实现了自定义列表视图。现在用户从另一个导致数据库更新的活动刷新应用程序。所以,现在用户回到具有自定义列表视图的活动。现在问题是列表视图没有更新到新的数据集。为了解决这个问题,我在我的活动中调用 oncreate in onresume,该活动具有与之关联的自定义列表视图。 但是这样做会导致列表视图中的项目自我复制(意味着它会增加项目的数量并在每次刷新调用时重复自身)。 请帮忙!

【问题讨论】:

  • 永远不要手动调用活动生命周期方法!让 Android 自己来做。请张贴代码。
  • Dont call onCreate()` in onResume()...更好的方法是你必须在onResume()下调用你的列表填充方法

标签: android android-listview oncreate onresume


【解决方案1】:

http://developer.android.com/training/basics/activity-lifecycle/starting.html

在activity启动时,onCreate()、onStart()、onResume()方法会依次被依次调用,如果在onResume()中调用onCreate(),则意味着要填满列表两次。

你可以做一个fillList()之类的方法,只在onResume()状态下调用,这样,每当你的activity恢复或创建时,都会调用这个方法,但要确保这个操作不重。根据android,活动开始对用户可见 onStart() 但在 onResume() 用户可以交互之后。

【讨论】:

  • 这很好知道,但是为什么如果我启动应用程序,简历被调用了 2 次?如果我退出并返回应用程序,则为 1 次。
【解决方案2】:

作为标题的答案,你永远不应该在onResume() 中调用onCreate(),因为在onResume() 方法中没有什么是你不能做的。

当应用程序启动时,不仅会调用onCreate(),还会调用onResume()。因此,最好将应用程序启动或再次进入前台时必须调用的任何代码移动到 onResume() 方法中。

如果此答案对您来说不够,我们需要有关您的确切代码的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多