Android N マルチウィンドウ モードをサポートするビデオ アプリを作成しようとしています。マルチウィンドウ モードでアクティビティのライフサイクルが混乱することを発見しました。この現象は、アプリがトップ画面にレイアウトされ、画面全体が縦向きになっているときにホームボタンをクリックすると、上部のアプリonPause()
が呼び出されますがonStop()
、呼び出されません。
Google のガイドラインhttps://developer.android.com/guide/topics/ui/multi-window.html#lifecycleによると、ビデオ アプリは、onStop()
コールバックではなくonPause()
コールバックでビデオの再生を一時停止する必要があります。
この状況では、ホーム ボタンが押され、アクティビティがバックグラウンドになり、ユーザーに表示されなくなります。アプリはビデオの再生を一時停止する必要がありますが、onStop()
コールバックを取得できません。その間、アクティビティはonMultiWindowChanged()
コールバックを起動しません。これは、バックグラウンドにあるにもかかわらず、アクティビティがまだマルチウィンドウ モードであることを意味します。この場合、isInMultiWindowMode()
が返さtrue
れます。
アプリが左側の画面にあり、画面全体が横向きの場合も同じ問題が発生します。
この質問を検索したところ、誰かがすでに問題を Google に投稿していることがわかりましたが、Android Nougat リリースでは処理されていません。
では、このような状況でビデオの再生を一時停止する適切なタイミングはいつでしょうか? コールバックでビデオを一時停止するとonPause()
、アクティビティがマルチウィンドウ モードでユーザーに表示される場合があります。onStop()
そうしないと、この場合、コールバックを取得できません。このような場合の適切な回避策はありますか?