如何使用onResume()?


86

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

另外,如果我想在另一个人的执行,该方法是executed-年底重新启动的活动onCreate()onResume()

如果我想更新数据,该如何放入 onResume()?


每当您从调用或其他内容导航回活动时,都会调用onResume()。您可以像onCreate()一样重写onResume方法并执行任务。
JibяaᴎKhaᴎ

可以帮助您进一步了解Android应用程序的生命周期。
TronicZomB

2
:在被称为这些方法在Android开发者文档中解释序列developer.android.com/reference/android/app/...
迈克尔

1
确保选择答案。欢迎来到SO。
donfede

Answers:


129

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

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

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

}

72

重新启动应用程序将调用OnCreate()

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

Android活动生命周期,来自https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle上的https://developer.android.com/images/activity_lifecycle.png


1
使用超级链接来提供链接。
Manoj Fegde

链接有时会给我概率。我不知道为什么
Viswanath Lekshmanan

2
我不建议手动调用Activity生命周期中的任何方法:),这可能会导致很多问题。
2013年

1
@Cata,我以为Viswanath意味着将调用这些方法,因此我相应地更新了答案。
Mathieu K.

28

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

就像扰流板一样,onCreate()首先被调用,然后如果您通过进入主屏幕或启动另一个活动来暂停该活动,则会onPause()被调用。如果OS同时破坏了活动,则会onDestroy()被调用。如果您继续使用该应用程序,但该应用程序已被销毁,onCreate()将被调用,否则onResume()将被调用。

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

做我提到的练习,您将获得更好的理解。


1
我一直在寻找这样的详细解释,这确实帮助我创建了一个完美的应用程序活动周期。谢谢。
基诺·克莱顿

您忘记了onStart()
Dory Daniel,

9

先前的大多数答案都很好地解释了如何,为什么以及何时使用,onResume()但是我想补充一些有关重新创建您的的信息Activity

我想知道是否要在其他执行结束时重新启动活动,然后在onCreate()或onResume()上执行什么方法

答案是:onCreate()但是,在决定实际重新创建它时,您应该问自己Activity要重新创建多少需求。如果是在适配器的数据,说一个列表,然后你可以叫notifyDataChanged()adapter重新填充adapter,而不必重新绘制的一切。

同样,如果您只需要更新某些views而不是全部,那么调用需要更新invalidate()view(一个或多个)可能会更有效。这只会重绘这些内容,views并可能使您的应用程序运行更流畅。希望对您有所帮助。


5

onResume()是在活动生命周期中称为的方法之一。onResume()是在onPause()活动从视图中隐藏时(例如,如果您启动一个将其隐藏的新活动)在任何时候都被称为的对象。onResume()当隐藏的活动返回到屏幕上查看时,将调用。

您是一个疑问,请问使用哪种方法重新启动活动。onCreate()在首次创建活动时调用。实际上,大多数活动都是通过一系列onPause()onResume()调用在后台进行的。只有onRestart()先通过调用onStop()将其完全停止,然后使其恢复活力,然后才能真正“重新启动”活动。因此,如果您实际上并没有停止使用onStop()它,那将是您最喜欢的活动onResume()

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

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

当我们单击视图中的Item时会调用onResume()吗?
rajiv_

1
单击一个项目不一定会调用onResume。如果该视图被隐藏和还原,或者在完全创建视图时处于初始加载状态,则将调用onResume方法。
Rarw '17

显示错误未通过super.onResume()调用
sirmagid


2

科特琳

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

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

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

1

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

我对活动生命周期进行了一些研究,对本主题的理解如下:如果您要在执行另一个活动结束时重新启动活动(A),则可能会有几种不同的情况。

  1. 其他活动(B)已被暂停和/或停止或销毁,并且活动A可能已暂停(onPause()),在这种情况下,活动A将调用onResume()

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

  3. 活动B已被暂停和/或停止或销毁,活动A已被销毁,程序员可以手动调用onStart()首先启动活动,然后再调用onResume(),因为当活动处于销毁状态时,活动具有尚未开始,而这是在活动完全删除之前发生的。如果活动被删除,则需要再次创建活动。我认为手动调用onStart()是因为如果未启动活动并将其创建,则将在onCreate()之后调用onStart()。

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

最好借助活动生命周期图来了解生命周期。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.