Activity
クラスのドキュメントから:)
活性の全体の寿命がonDestroy(単一最後の呼び出しに至るまでのonCreate(バンドル)への最初の呼び出しの間に起こります。アクティビティはonCreate()で "グローバル"状態のすべての設定を行い、残りのすべてのリソースをonDestroy()で解放します。たとえば、ネットワークからデータをダウンロードするスレッドがバックグラウンドで実行されている場合、onCreate()でそのスレッドを作成してから、onDestroy()でスレッドを停止することがあります。
アクティビティの可視的な有効期間は、onStart()の呼び出しとonStop()への対応する呼び出しの間に発生します。この間、ユーザは画面上のアクティビティを見ることができますが、フォアグラウンドには存在せず、ユーザと対話することもできます。これらの2つの方法の間で、ユーザーにアクティビティを表示するのに必要なリソースを維持できます。たとえば、OnStart()にBroadcastReceiverを登録して、UIに影響を与える変更を監視し、ユーザーが表示しているものが表示されなくなったときにonStop()で登録を解除できます。 onStart()メソッドとonStop()メソッドは、アクティビティが表示されてユーザーに表示されなくなるため、複数回呼び出すことができます。
アクティビティのフォアグラウンド・ライフタイムは、onPause()を呼び出すまで、onResume()の呼び出しの間に発生します。この間、アクティビティは他のすべてのアクティビティの前にあり、ユーザと対話します。たとえば、デバイスがスリープ状態になったとき、アクティビティ結果が配信されたとき、新しいインテントが配信されたときなど、アクティビティは頻繁に再開と一時停止の状態になることがあるため、これらのメソッドのコードはかなり軽量でなければなりません。
2番目と3番目の点には、探しているものが明確に示されているようです(onResume()
メソッド)。フラグメントを使用している場合、同じ規則が適用されます。フラグメントのonResume()
メソッドは、アクティビティのonResume()
の後に呼び出されます。
http://developer.android.com/reference/android/app/Activity.html http://developer.android.com/reference/android/app/Fragment.html#Lifecycle
EDIT:
さて、どうやらこれには直接的な解決策はありません。アイデアはありますが、それは適切な解決策よりも即興のほうがはるかです。また、動作している場合と動作しない場合があります。これらの事を試してみてください - あなたは(タブ付き)ViewPager
に断片を使用している場合
- 、
FragmentPagerAdapter
は、現在表示されているフラグメントにsetUserVisibilityHint(true)
を呼び出します。これはあなたの断片にgetUserVisibilityHint()
で確認できます。
ScrollView
をコンテナとして使用している場合は、スクロールの変更をリッスンして、フラグメントが表示されているかスクロールアウトされているかを判断できます。詳細はthis answerを参照してください。
- 個々のウィジェットについては、表示可能性を
View.isVisible()
で確認できます。
これらのオプションのいずれも、可視性をチェックするための明確なイベントベースのメカニズムを提供していませんが、多分それらを何らかの形で使用できます。 1つの方法は、独自のコールバックを定義し、上記のメソッドをオーバーライドしてコールバックすることです。これらの方法(または他の方法)のいずれかが機能するかどうかを教えてください。
そのウィジェット/フラグメントからトーストを使用することはどうですか? – learner
あなたのレイアウトの個々の 'View'がユーザに見えるかどうか調べたいですか?もしそうなら、この答えはあなたを助けるかもしれません:http://stackoverflow.com/a/12428208/3962091 – NoChinDeluxe
@NoChinDeluxe、それは問題が表示されるかどうか*表示されますが、 。いつ起きているのかを常にチェックする必要がありますか? Androidにはこのためのイベントはありませんか? – TOB