app显示错误无法添加窗口 - 令牌null无效;你的活动在运行吗?

时间:2016-12-19 07:19:08

标签: android android-videoview android-windowmanager

我想在服务弹出窗口上显示视频,但是当我启动该服务时,我的应用程序崩溃显示此错误: -

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?

我的视频播放器服务代码在这里:

VideoExtractor VideoExtractor = VideoExtractor.create();
    VideoExtractor.extract("FTD9aA4S5BY").enqueue(new Callback<VideoExtractionResult>() {
        @Override
        public void onResponse(Call<YouTubeExtractionResult> call, Response<VideoExtractionResult> response) {
            Log.d(TAG, response.body().getVideoUri().toString());
            final VideoView mVideoview = (VideoView)mView.findViewById(R.id.youtubePlayer);
            mVideoview.setMediaController(new MediaController(PlayerService.this))
            mVideoview.setVideoURI(response.body().getVideoUri());
            mVideoview.start();

            WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                    WindowManager.LayoutParams.WRAP_CONTENT,
                    WindowManager.LayoutParams.WRAP_CONTENT,
                    WindowManager.LayoutParams.TYPE_PHONE,
                    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                    PixelFormat.TRANSLUCENT);

            params.gravity = Gravity.TOP | Gravity.LEFT;
            params.x = 0;
            params.y = 100;
            mWindowManager.addView(mView, params);
        }

        @Override
        public void onFailure(Call<YouTubeExtractionResult> call, Throwable t) {

        }
    });

我在简历方法中使用myactivity调用此服务。

此错误的错误堆栈在这里:

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
                                                                         at android.view.ViewRootImpl.setView(ViewRootImpl.java:574)
                                                                         at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:310)
                                                                         at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:86)
                                                                         at android.widget.MediaController.show(MediaController.java:379)
                                                                         at android.widget.MediaController.show(MediaController.java:329)
                                                                         at android.widget.VideoView$2.onPrepared(VideoView.java:454)
                                                                         at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:2815)
                                                                         at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                         at android.os.Looper.loop(Looper.java:148)
                                                                         at android.app.ActivityThread.main(ActivityThread.java:5539)
                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

为什么我会收到此错误以及如何解决此问题。

1 个答案:

答案 0 :(得分:1)

“WindowManager $ BadTokenException”当您使用像对话框这样的窗口级对象时,如果在关闭您的活动之前发生此错误,则会发生此错误。所以你应该把活动被破坏的条件,然后请使用上下文。