アクティビティとフラグメントの両方に関して、 recent-apps / recentsキーの動作を明確に示すアプリを作成しました。
(通常のライフサイクルイベントがこのキーによってトリガーされないという主張は、明らかに誤りです。)
onCreate()
メインアクティビティでは、すべての既知のアクティビティライフサイクルイベントをログに記録するための配列を初期化し、2番目のFrameLayoutでメインフラグメントをそれ自体と一緒に起動します。
onAttach()
メインのFragmentは、既知のすべてのFragmentライフサイクルイベントをログに記録するための個別の配列を初期化します。
ロギングの目的では、アクティビティとフラグメントonWindowFocusChanged()
の両方が単なる別のライフサイクルイベントとして扱われます。
ログに記録されたイベントにはタイムスタンプが付けられるため、レンダリング時にユーザーの「一時停止」表示を指定できます(レンダリングはonWindowFocusChanged()
いつ内部で発生しますhasFocus==true
)。
テストアプリの起動時にユーザーに表示される内容は次のとおりです。
数秒後、ユーザーは最近のアプリを押し、数秒待ってからもう一度押すと、真実がわかります。
注意:最近のアプリボタンを使用する代わりに、(a)タブレットのオフ/オンボタンを押す(b)2番目のアクティビティの開始ボタン(c)を押すなどして実験を繰り返すと、同じ結果が得られます。
OPへの回答:
どうやら、最近のアプリのキーが実際に押されたことを検出できるコードはありません!
ただし、アプリは関連するライフサイクルイベントを正しく処理する必要があるため、問題ではありません。