12

シナリオが何であれ、 onStop() への呼び出しの前に常に onPause() への呼び出しがあることを読みました。参照: http://developer.android.com/training/basics/activity-lifecycle/stopping.htmlの図 1

ユーザーのフォーカスがなくても部分的に表示されている場合、アクティビティは一時停止され、まったく表示されていない場合は停止されます。

ユーザーがアクティビティに参加しているときに、最近のアプリ ウィンドウから別のアプリを選択して入力すると、アクティビティは再開/実行中から停止状態になります。中間の一時停止状態はありません。

ではない?

onStop() の前に常に onPause() を使用する正当な理由は何ですか。onPause() で行われることを onStop() で行うことができます。onStop() の前に常に onPause() が必要なのはなぜですか?

4

2 に答える 2

28

onPause()常に呼び出されます。これは保証されています。アクティビティの状態を保存する必要がある場合は、.xml に保存する必要がありますonPause()onStop()の後に呼び出される場合とそうonPause()でない場合があります。状況によります。

多くのライフサイクルメソッドがあります。それらすべてをオーバーライドする必要はありません。アクティビティの動作をカスタマイズする必要がある (またはしたい) ものだけをオーバーライドする必要があります。アプリケーションごとに要件が異なるため、多くのライフサイクル メソッドがあります。アクティビティのライフサイクルは十分に文書化され、適切に動作します。これにより、プログラマーは、アプリケーションの特定の要件に基づいて、必要な場所に正確にコードを配置できます。

あなたは尋ねました

onStop() の前に常に onPause() を使用する正当な理由は何ですか。onPause() で行われることを onStop() で行うことができます。

onPause()Android が何か他のことをしたいときにアクティビティがフォアグラウンドにある場合、アクティビティで常に呼び出されます。別のアクティビティが開始され、アクティビティonStop()が呼び出される可能性があります。それはonResume()あなたの活動を呼び起こすだけかもしれません。ライフサイクルメソッドをこれ以上呼び出さずにプロセスを強制終了する可能性があります。

の呼び出しが保証されていないため、 onPause() で行われることを常にonStop() で行うonStop()ことはできません。

onResume()ほとんどのアクティビティでは、とにコードを挿入する必要があることがわかりますonPause()onStop()通常、 、onStart()またはで何もする必要はありませんonRestart()

于 2013-11-05T17:43:52.973 に答える
3

はい、onPause()メソッドは常に実行されます。実際、これは、アクティビティがフォーカスを失ったり、停止したり、破棄されたりしたときに呼び出されることが保証されている唯一のメソッドです。

このページをご覧ください:アクティビティ

onResume()
アクティビティがユーザーとの対話を再開するときに呼び出されます。この時点で、アクティビティはアクティビティ スタックの一番上にあり、ユーザー入力がそこに送られます。常にonPause() が続きます。

于 2013-11-05T16:02:46.757 に答える