У меня есть следующий код, который использует VideoView и MediaController:
FrameLayout frameLayout = findViewById(R.id.frameLayout);
VideoView videoView = findViewById(R.id.videoView);
mediaController = new MediaController(this) {
@Override
public void hide() {
// do not hide
}
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
((Activity) getContext()).finish();
}
return super.dispatchKeyEvent(event);
}
};
mediaController.setAnchorView(frameLayout);
videoView.setMediaController(mediaController);
videoView.setVideoPath("android.resource://" + getPackageName() + "/" + R.raw.meditation);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
mediaController.show(0);
}
}, 100);
Проблема в том, что когда действие завершается, я получаю следующую ошибку в своем журнале:
10-28 05:57:16.075 6535-6535/com.kjdion.anxietynow E/WindowManager: android.view.WindowLeaked: Activity com.kjdion.anxietynow.MeditationActivity просочилась в окно DecorView@13fd277[], которое изначально было добавлено здесь, на android .view.ViewRootImpl.(ViewRootImpl.java:485) в android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:346) в android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93) в android.widget.MediaController.show (MediaController.java:364) в com.kjdion.anxietynow.MeditationActivity$2.run(MeditationActivity.java:53) на android.os.Handler.handleCallback(Handler.java:790) на android.os.Handler.dispatchMessage(Handler.java:99) на android.os.Looper.loop(Looper.java:164) на android.app. ActivityThread.main(ActivityThread.java:6494) в java.lang.reflect.Method.invoke(собственный метод) в com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) в com.android. внутренний.os.ZygoteInit.main(ZygoteInit.java:807)
Несмотря на эту ошибку, все работает отлично.
Почему это происходит и как это исправить?