onResume()の使い方は?


86

onResume()Androidで使用する例を教えてもらえますか?

また、別の実行の終了時にアクティビティを再開したい場合、どのメソッドが実行されますか?onCreate()またはonResume()

そして、データを更新したい場合、どのようにそれを入れるのですか? onResume()?


onResume()は、呼び出しなどからアクティビティに戻るたびに呼び出されます。onCreate()と同様にonResumeメソッドをオーバーライドして、タスクを実行できます。
JibяaᴎKhaᴎ

これは、Androidアプリのライフサイクルをより深く理解するのに役立つ場合があります。
TronicZomB 2013年

2
これらのメソッドは、Androidの開発者ドキュメントで説明されて呼び出される順序:developer.android.com/reference/android/app/...
マイケル・

1
必ず答えを選択してください。SOへようこそ。
donfede 2013年

回答:


131

再起動するアクティビティでは、最初にonResume()メソッドが実行されます。

この方法を使用するには、次のようにします。

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

}

72

アプリを再起動すると、が呼び出されますOnCreate()

一時停止しているときにアプリを続行すると、が呼び出されますOnResume()https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycleの公式ドキュメントから、アクティビティのライフサイクルの図を次に示します。

https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycleのhttps://developer.android.com/images/activity_lifecycle.pngからのAndroidアクティビティライフサイクル


1
ハイパーリンクを使用してリンクを提供します。
Manoj Fegde 2013年

リンクは時々私に問題を与えています。理由はわかりません
Viswanath Lekshmanan 2013年

2
多くの問題を引き起こす可能性のある、アクティビティライフサイクルの一部であるメソッドを手動で呼び出すことはお勧めしません:)。
カタ2013年

1
@ Cata、Viswanathはメソッドが呼び出されることを意味していると思い、それに応じて回答を更新しました。
Mathieu K.

最近では、onResumeがonCreateの前に呼び出されていることに注意してください。
mdre

28

理解するための最良の方法は、アクティビティですべてのライフサイクルメソッドをオーバーライドし、ブレークポイント(エミュレーターをチェックインする場合)またはログをそれぞれに配置することです。どちらがいつ呼び出されるかを知ることができます。

ネタバレと同じように、onCreate()最初に呼び出されます。次に、ホーム画面に移動するか、別のアクティビティを起動してアクティビティを一時停止するonPause()と、呼び出されます。その間にOSがアクティビティを破棄するonDestroy()と、が呼び出されます。アプリを再開し、アプリがすでに破棄されている場合onCreate()は、呼び出されるか、onResume()呼び出されます。

編集:私は忘れましたonStop()、それは前に呼び出されonDestroy()ます。

私が言及した演習を行うと、よりよく理解できるようになります。


1
私はしばらくの間、そのような詳細な説明を探していました。これは、完璧なアプリアクティビティサイクルを作成するのに本当に役立ちました。ありがとうございました。
Keno Clayton

onStart()を忘れた
DoryDaniel19年

9

これまでの回答のほとんどは、どのように、なぜ、いつ使用するかを説明するのに役立ちますが、のonResume()再作成について何か追加したいと思いますActivity

onCreate()またはonResume()で実行される他のメソッドの実行の最後にアクティビティを再開するかどうかを知りたい

答えは、onCreate()しかし、実際にそれを再作成することを決定するとき、あなたは自分自身にどれだけActivity再作成する必要があるかを自問するべきです。それは、アダプタ内のデータであれば、あなたが呼び出すことができ、リストのために言うnotifyDataChanged()adapter再投入するadapterと、すべてを再描画する必要はありません。

また、あなただけの特定のアップデートが必要な場合はviewsすべてではありませんが、コールする方が効率的invalidate()view必要性が更新されていること(複数可)。これviewsにより、それらが再描画されるだけで、アプリケーションをよりスムーズに実行できる可能性があります。これがお役に立てば幸いです。


5

onResume()は、アクティビティのライフサイクル全体で呼び出されるメソッドの1つです。onResume()は、onPause()アクティビティがビューから非表示になっているときはいつでも呼び出される対応物です。たとえば、非表示にする新しいアクティビティを開始した場合などです。onResume()非表示にされたアクティビティが画面に表示されるように戻ったときに呼び出されます。

あなたは、アクティビティを再開するためにどの方法が使用されているかを尋ねます。onCreate()アクティビティが最初に作成されたときに呼び出されます。実際には、ほとんどの活動は、一連の背景に固執onPause()し、onResume()通話。アクティビティが実際に「再開」さonRestart()れるのは、最初に呼び出しによって完全に停止されonStop()、次に復活した場合のみです。したがって、実際にアクティビティを停止していないonStop()場合は、を使用するのが最も適切ですonResume()

上記のリンクにあるAndroidのドキュメントを読んで、さまざまなライフスタイルの方法の関係をよりよく理解してください。最終的に一般的な形式を使用するライフサイクル方法に関係なく、同じです。コメント付きのセクションに、標準のメソッドをオーバーライドして、コード、つまりその時点でアクティビティに実行させたいことを含める必要があります。

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

ビュー内のアイテムをクリックすると、onResume()が呼び出されますか?
rajiv_ 2017

1
アイテムをクリックしても、必ずしもonResumeが呼び出されるとは限りません。onResumeメソッドは、そのビューが非表示になって復元された場合、または完全に作成される前の初期ロード時に呼び出されます。
rarw 2017

ショーエラーはsuper.onResume()に通じ呼び出していませんでした
sirmagid


2

KOTLIN

再起動するアクティビティでは、最初に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()内に配置します

アクティビティライフサイクル図を使用して、ライフサイクルを理解することをお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.