我有以下使用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:活动
  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.internal.os.ZygoteInit.main(ZygoteInit.java:807)


尽管有此错误,但一切正常。

为什么会发生这种情况,我该如何解决?

最佳答案

这是因为您覆盖了控制器的hide方法,以便它不会隐藏。如果可以,请删除该代码,并且该代码应该可以正常工作。

10-07 19:45
查看更多