Androidドキュメントはこちらからhttp://developer.android.com/reference/android/app/Activity.htmlでは、「アクティビティがフォアグラウンドになった」場合は が呼び出されonPause()
、「アクティビティが表示されなくなった」場合は が呼び出されると書かれていますonStop()
。
「アクティビティがフォアグラウンドになる」は「アクティビティが表示されなくなる」と同じではありませんか? これらの違いを教えてください。
ベストアンサー1
いいえ、あるアクティビティがフォアグラウンドになったとしても、必ずしも他のアクティビティが完全に見えなくなるわけではありません。次のケースを考えてみましょう。
ここでは、両方のアクティビティが同時に表示されます。フィールドを含む最初のアクティビティは別のアクティビティによって隠されており、ユーザーはそれを操作できなくなります。ただし、結果として生じるすべての結果とともに、最初のアクティビティは引き続き表示されます。
すると、どのアクティビティが完全に不透明で画面全体を覆っているとみなされ、どのアクティビティはそうではないかという疑問が残ります。この決定は、アクティビティを含むウィンドウに基づいて行われます。ウィンドウにフラグwindowIsFloating
または がある場合windowIsTranslucent
、アクティビティは基になるものを非表示にしないものとみなされます。それ以外の場合は非表示になり、 がonStop()
呼び出されます。関連するコードは にありますcom.android.server.am.ActivityRecord
。
fullscreen = ent != null && !ent.array.getBoolean(
com.android.internal.R.styleable.Window_windowIsFloating, false)
&& !ent.array.getBoolean(
com.android.internal.R.styleable.Window_windowIsTranslucent, false);