Android アクティビティのライフサイクルに大きな疑問があります。通常の英語では、一時停止を行うと再開が行われます。しかし、アクティビティのライフサイクルでは、OnResume は onPause の前に初めて単独で呼び出されます。この背後にある理由は?
なぜこのような構造になっているのか、誰か教えてもらえますか?
ありがとう。
Android アクティビティのライフサイクルに大きな疑問があります。通常の英語では、一時停止を行うと再開が行われます。しかし、アクティビティのライフサイクルでは、OnResume は onPause の前に初めて単独で呼び出されます。この背後にある理由は?
なぜこのような構造になっているのか、誰か教えてもらえますか?
ありがとう。
一般的な英語の用語では、再開とは、一時停止した後に何かが再びやり取りを開始することを意味します。
Android の用語では、Activity がフォアグラウンドにあり、ユーザーが Activity に入力を開始したときを意味します。初めてフォアグラウンドにある場合もあれば、一時停止した後である場合もあります。onResume() は、ユーザーがアクティビティとの対話を開始したことを意味するだけです。
onStart()
とonResume()
は 2 つの異なる用語です。onStart()
アクティビティがユーザーに表示されるようになったときに呼び出されます。onResume()
アクティビティがフォアグラウンドになり、ユーザーが操作を開始すると呼び出されます。
例を挙げますが、
いくつかの移動オブジェクトを使用するアクティビティがあるとします。ここでは、さまざまな段階で実行される操作について説明します。
onStart()-
ここで、アニメーションではなく、アクティビティが開始されます。
onResume()-
ここで、オブジェクトのアニメーションが開始されます。
onPause()-
ここでオブジェクトはアニメーションを停止しますが、アクティビティはまだ実行中です。
OnStop-
ここでアクティビティが停止します。
理解に役立つことを願っています。
この画像を参照してください。
onResume() は onStart() の直後に呼び出されます。あなたが気付いているのはonResume()だと思います。これは、アクティビティのライフサイクルを詳細に説明しています。
OnResume: このメソッドは、一時停止状態になった後、アクティビティがユーザーとの対話を開始するときに呼び出されます。このメソッドが呼び出されると、アクティビティはアクティビティ スタックの一番上に移動し、ユーザー入力を受け取ります。アクティビティがユーザー入力の受け入れを開始した後にタスクを実行する必要がある場合、アクティビティはこのメソッドをオーバーライドできます。
アクティビティのライフ サイクルを確認し、Android の onPause() と onResume() の概念が異なることを確認できます。私は以下の質問にのみ答えています..残りはあなたが読むことができます
なぜこのような構造になっているのか、誰か教えてもらえますか?
ドキュメントから
onResume()
アクティビティがユーザーとの対話を開始するときに呼び出されます。この時点で、アクティビティはアクティビティ スタックの一番上にあり、ユーザー入力がそこに送られます。常に onPause() が続きます。
つまり、何かを開始したい場合 (たとえば、このアクティビティにフォーカスがあり、ユーザー インタラクションを受信しているときに 2 番目のカウントを示すタイマー)、onResume() で開始できます。onResume() は、このアクティビティにフォーカスがあるときのコールバックです。このアクティビティが作成されたばかりか、一時停止後に再開されたかに関係なく、呼び出す必要があります。
onStart() の後は問題ありませんが、英語の用語では、再開は一時停止後に呼ばれますか? なぜそのように設計されたのですか?
この場合、文字通りの意味をとるべきではないと思います。