【问题标题】:MediaController/VideoView causes android.view.WindowLeakedMediaController/VideoView 导致 android.view.WindowLeaked
【发布时间】:2018-04-09 20:27:15
【问题描述】:

我有以下使用 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)

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

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

【问题讨论】:

    标签: java android android-videoview mediacontroller


    【解决方案1】:

    这是因为您重写了控制器的 hide 方法,使其不会隐藏。如果可以的话,删除它,代码应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      相关资源
      最近更新 更多