私のアクティビティの 1 つは、VideoView
いくつかのコンテンツを再生するために埋め込まれています。ビデオの一時停止/再開をそれぞれonPause()
とに実装onResume()
しましたが、驚いたことにonResume
、アクティビティが実際にユーザーに表示される前に呼び出されます。
正確には、シナリオは次のとおりです。
- アクティビティは画面上にあり、ビデオは再生中です
- ユーザーが電源ボタンで電話をロックする
- アクティビティが
onPause()
呼び出され、ビデオが停止します - ユーザーが電源ボタンを押す
- ユーザーが画面のロックを解除する前に、アクティビティが
onResume()
呼び出されます (したがって、ビデオが再開されます) 。
Android 2.2、2.3、4.0でこの動作を確認しました。ロック画面が消えた直後にアクティビティが再描画する準備を整えるために、意図的にそのように行われていると思います。
アクティビティが実際にユーザーに表示される瞬間を検出するにはどうすればよいですか? 呼ばれるのを待ってみましたonWindowFocusChanged(true)
が、うまくいっているようですが、完全に安全だとは思えません。