【问题标题】:How to use onResume()?如何使用 onResume()?
【发布时间】:2021-03-24 02:34:41
【问题描述】:

谁能给我一个在Android中使用onResume()的例子?

另外,如果我想在另一个执行结束时重新启动活动,执行哪个方法?onCreate() 或onResume()?

如果我想更新数据,我怎么把它放在onResume()?

【问题讨论】:

  • onResume() 每当您从呼叫或其他方式导航回活动时都会调用。您可以像 onCreate() 一样重写 onResume 方法并执行任务。
  • This 可以帮助您更多地了解Android应用的生命周期。
  • Android 开发者文档中解释了这些方法的调用顺序:developer.android.com/reference/android/app/…
  • 确保选择一个答案。欢迎来到 SO。

标签: android android-lifecycle onresume


【解决方案1】:

任何重新启动的 Activity 都会首先执行其 onResume() 方法。

要使用此方法,请执行以下操作:

@Override
public void onResume(){
    super.onResume();
    // put your code here...

}

【讨论】:

    【解决方案2】:

    重启应用会调用OnCreate()。

    在暂停时继续应用将调用OnResume()。来自https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle 的官方文档,这是活动生命周期的图表。

    【讨论】:

    • 使用超链接提供链接。
    • 链接有时会给我问题。我不知道为什么
    • 我不建议手动调用任何属于 Activity 生命周期的方法 :),这会导致很多问题。
    • @Cata,我认为 Viswanath 意味着将调用这些方法,并且我已经相应地更新了答案。
    • 我想注意现在 onResume 是在 onCreate 之前调用的!
    【解决方案3】:

    最好的理解方法是在您的活动中覆盖所有 LifeCycle 方法,并在每个方法中放置一个断点(如果签入模拟器)或一个日志。您将知道何时调用哪个。

    就像剧透一样,首先调用onCreate(),然后如果您通过转到主屏幕或启动另一个活动来暂停活动,则调用onPause()。如果操作系统在此期间破坏了活动,则调用onDestroy()。如果您恢复应用程序并且应用程序已经被销毁,onCreate() 将被调用,否则onResume() 将被调用。

    编辑:我忘了onStop(),它在onDestroy() 之前被调用。

    做我提到的练习,你会有更好的理解。

    【讨论】:

    • 我一直在寻找这么详细的解释,这确实帮助我创建了完美的应用程序活动周期。谢谢。
    • 你忘记了 onStart()
    【解决方案4】:

    之前的大多数答案都很好地解释了如何、为什么以及何时使用 onResume(),但我想补充一些关于重新创建 Activity 的内容。

    我想知道我是否想在其他方法的执行结束时重新启动活动 onCreate() 或 onResume()

    答案是onCreate() 但是,在决定实际重新创建它时,您应该问自己有多少Activity 需要重新创建。如果它是适配器中的数据,比如列表,那么您可以在adapter 上调用notifyDataChanged() 来重新填充adapter,而不必重绘所有内容。

    另外,如果您只需要更新某些views 而不是全部,那么在需要更新的view(s) 上调用invalidate() 可能会更有效。这只会重绘那些views 并可能让您的应用程序运行得更顺畅。我希望这可以帮助你。

    【讨论】:

      【解决方案5】:

      当您打开应用程序时,它会经历以下状态: onCreate() –> onStart() –> onResume()

      当您按下返回按钮并退出应用程序时

      onPaused() --> onStop() --> onDestory()

      当你按下主页按钮时

      onPaused() –> onStop()

      按下主页按钮后,再次从最近的任务列表中打开应用时

      onRestart() –> onStart() –> onResume()

      从对话框中关闭对话框或返回按钮后

      onResume()

      如果手机正在响铃并且用户正在使用应用程序

      onPause() –> onResume()

      通话结束后

      onResume()

      当您的手机屏幕关闭时

      onPaused() –> onStop()

      当您的手机屏幕重新打开时

      onRestart() –> onStart() –> onResume()

      快乐编码...@Ambilpura

      【讨论】:

      • 当你按下最小化按钮时 onPaused()
      【解决方案6】:

      onResume() 是整个activity lifecycle 中调用的方法之一。 onResume() 是 onPause() 的对应物,只要活动从视图中隐藏,就会调用它,例如如果您开始一个隐藏它的新活动。 onResume() 在隐藏的活动返回到屏幕上查看时被调用。

      您的问题是询问使用什么方法来重新启动活动。 onCreate() 在首次创建活动时调用。在实践中,大多数活动通过一系列onPause() 和onResume() 调用在后台持续存在。只有通过调用onStop() 完全停止活动然后恢复活动,onRestart() 才会真正“重新启动”活动。因此,如果您实际上并没有停止使用onStop() 的活动,那么您很可能会使用onResume()。

      阅读以上链接中的 android 文档,以更好地了解不同生活方式之间的关系。无论您最终使用哪种生命周期方法,通用格式都是相同的。您必须覆盖标准方法并在注释部分包含您的代码,即您希望活动在该点执行的操作。

      @Override
      public void onResume(){
       //will be executed onResume
      }
      

      【讨论】:

      • 当我们点击视图中的一个Item时是否调用onResume()?
      • 点击一个项目不一定会调用onResume。如果视图在完全创建之前被隐藏和恢复,或者在初始加载时,将调用 onResume 方法。
      • 显示错误没有调用到 super.onResume()
      【解决方案7】:

      重新查看 Android Activity 生命周期参考。有一张漂亮的图片,表格显示了调用了哪些方法。参考链接google

      https://developer.android.com/reference/android/app/Activity.html

      【讨论】:

        【解决方案8】:

        科特林

        任何重新启动的 Activity 都会首先执行其 onResume() 方法。

        要使用此方法,请执行以下操作:

        override fun onResume() {
                super.onResume()
                // your code here
            }
        

        【讨论】:

          【解决方案9】:

          活动开始后,重新启动(onRestart() 发生在 onStart() 之前),或暂停(onPause()),onResume() 调用。当 Activity 处于 onResume() 状态时,该 Activity 就可以被应用用户使用了。

          我稍微研究过activity的生命周期,以下是我对这个话题的理解: 如果您想在另一个执行结束时重新启动活动 (A),可能有几种不同的情况。

          1. 另一个活动 (B) 已暂停和/或停止或销毁,活动 A 可能已暂停 (onPause()),在这种情况下,活动 A 将调用 onResume()

          2. 活动 B 已暂停和/或停止或销毁,活动 A 可能由于内存问题已停止 (onStop()),在这种情况下,活动 A 将首先调用 onRestart(),onStart () 第二个,然后是 onResume()

          3. Activity B 已暂停和/或停止或销毁,Activity A 已销毁,程序员可以手动调用 onStart() 来先启动 Activity,然后再调用 onResume(),因为当一个 Activity 处于活动尚未开始的破坏状态,这发生在活动被完全删除之前。如果活动被删除,则需要重新创建活动。 手动调用 onStart() 我想是因为如果 Activity 没有启动而被创建,onStart() 会在 onCreate() 之后被调用。

          如果要更新数据,请创建一个数据更新函数并将该函数放入 onResume() 中。或者在 onResume() 里面放一个 loadData 函数

          最好借助Activity生命周期图来理解生命周期。

          【讨论】:

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