1

MediaController を使用して、3 秒後に消えないように変更しようとしています。関連する質問でこのコードを見つけ、使用しています:

mediaController = new MediaController(this) {   
    @Override
    public void hide()
    {
        mediaController.show();
    }
};

このコードは機能しますが、([戻る] ボタンを使用して) アクティビティが停止すると、以下のコードの show(0) ステートメントに追加されたビューからリークされたウィンドウに関するログ エラーが発生します。

public void onPrepared(MediaPlayer mediaPlayer) {

    mediaController.setMediaPlayer(this);
    mediaController.setAnchorView(findViewById(R.id.audio_control));

    handler.post(new Runnable() {
      public void run() {
        mediaController.setEnabled(true);
        mediaController.show(0);
      }
    });
}

show メソッドを呼び出すだけで hide メソッドをオーバーライドすると、アクティビティを終了するときに hide メソッドが必要なことを実行していないように思えます。実際にコントローラーを非表示にするなど、他の必要な機能をオーバーライドする必要があります。

必要に応じてコントローラーを非表示にしたい (終了時など) が、単に 3 秒後に非表示になっている (アクティビティが終了していない) 場合はそうではありません。

または、常に 3 秒後にコントローラーを非表示にする必要があるかもしれませんが、このように実装されている理由がわかりません。いつもそこに置いておくほうがいいようです。

4

1 に答える 1