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