Intent
オブジェクトは、これらのコンポーネントが実行されている限り、Activity
、Service
およびその他のコンポーネントに永続的にアタッチされます。あなたが別のアプリケーションに移動したため、単に離れて行くだけではありません。その理由は、Androidがいつでもプロセスを終了させる可能性があるからですが、ユーザーはまだ戻って自分が行っていたことを続けたいと思うかもしれません。これにより、インテントはエクストラを介して情報の小さな(時には大きな)ビットを格納または送信するのに理想的です。
onNewIntent()
のメソッドは、より永続的なアプリケーションコンポーネントを処理するためのもので、LifeCycle中に複数回呼び出すことができますが、呼び出された理由(したがって呼び出されたデータ) 。 setIntent()
に電話するかどうかは、何をする必要があるかによって異なります。
なぜそれが後で呼び出されたか気にしない場合は、元のIntent
をsetIntent()
にコールしないでください。これは、誰が呼び出しても、それが提供するデータに関係なく、あなたのActivity
(または他のコンポーネント)が同じことをするときに特に便利です。
各イベントに個別に対応する必要がある場合は、少なくとも新しいIntent
の情報を保存する必要があります。つまり、setIntent()
を避けることができますが、リンク先のコンポーネントには、直接送信しない限り、Intent
の情報は含まれません。これは、元のIntent
が完全に処理されたことを保証できないアプリケーションにとって望ましい動作です。
個々のインテントに個別に応答する必要があり、オリジナルのIntent
は問題でない場合は、setIntent()
を使用します。これにより元のIntent
が破棄されますが、そこにはまだ新しいものがあります。ユーザーが離れても同じ場所に戻るように、新しいIntent
を配置します。
super.onNewIntent()
がこれを処理しない理由は、コアコンポーネントクラスが新しいものが古いものよりも重要であるかどうかを判断できないためです。それが気になるのは、にはとIntent
があります。これが、このようなメソッドをオーバーライドする理由です。つまり、は、重要なものと重要でないものを決定します。 Activity
のような基底クラスは、どんな方法であれ、私たちが持っているどんなデータでも使うことができます(オーバーライドして別途指示しない限り)。しかし、私たちが具体的に指示しない限り、彼らは私たちのデータを取り除くべきではない(しばしばできません)。 これは、あなたが実際にいくつかのプログラマーとしたくない議論です。 hehe
これは役立ちます。
この回答に本当に感謝します。目的は今私には非常に明確です。乾杯! – w3bshark