windowManager.addView()抛出WindowManager$InvalidDisplayException异常

本文探讨了使用WindowManager.LayoutParams设置view尺寸时出现的WindowManager$InvalidDisplayException异常问题,并提供了具体的异常堆栈信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

layoutParams有两种方法指定view的width、height,如下:

方法一:

WindowManager.LayoutParams mParams = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.WRAP_CONTENT,
	WindowManager.LayoutParams.WRAP_CONTENT
);

方法二:
mParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
mParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
利用方法一构造的params,调用windowManager.addView(View,params)时,
会抛出WindowManager$InvalidDisplayException异常,原因不明。求指导!
具体异常信息如下:
android.view.WindowManager$InvalidDisplayException: 
Unable to add window android.view.ViewRootImpl$W@3a1248f7 -- 
the specified window type is not valid
at android.view.ViewRootImpl.setView(ViewRootImpl.java:594)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:282)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
at com.test.duan.myuilibrarytest.view.DradListView$override.createDragImage(DradListView.java:131)
at com.test.duan.myuilibrarytest.view.DradListView$override.static$access$100(DradListView.java:21)
at com.test.duan.myuilibrarytest.view.DradListView$override.access$dispatch(DradListView.java)
at com.test.duan.myuilibrarytest.view.DradListView.access$100(DradListView.java:0)
at com.test.duan.myuilibrarytest.view.DradListView$1.run(DradListView.java:59)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

07-20 19:57:33.402 2248 2248 I BurialPointService1: Failed to show presentation on display: Display id 1: DisplayInfo{"内置屏幕", displayId 1, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS, FLAG_TRUSTED, real 1920 x 720, largest app 1920 x 1920, smallest app 720 x 720, appVsyncOff 1000000, presDeadline 16666666, mode 2, defaultMode 2, modes [{id=2, width=1920, height=720, fps=60.000004}], hdrCapabilities HdrCapabilities{mSupportedHdrTypes=[], mMaxLuminance=500.0, mMaxAverageLuminance=500.0, mMinLuminance=0.0}, minimalPostProcessingSupported false, rotation 0, state ON, type INTERNAL, uniqueId "local:130", app 1920 x 720, density 160 (167.013 x 167.779) dpi, layerStack 1, colorMode 0, supportedColorModes [0], address {port=130}, deviceProductInfo null, removeMode 0}, DisplayMetrics{density=1.0, width=1920, height=720, scaledDensity=1.0, xdpi=167.013, ydpi=167.779}, isValid=true 07-20 19:57:33.402 2248 2248 I BurialPointService1: android.view.WindowManager$InvalidDisplayException: Unable to add window android.view.ViewRootImpl$W@a379ee3 -- the specified display can not be found 07-20 19:57:33.402 2248 2248 I BurialPointService1: at android.view.ViewRootImpl.setView(ViewRootImpl.java:1099) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:409) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:109) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at android.app.Dialog.show(Dialog.java:342) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at android.app.Presentation.show(Presentation.java:257) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at com.adayo.aaop_deviceservice.service.BurialPointService.y(Unknown Source:48) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at com.adayo.aaop_deviceservice.service.BurialPointService.B(Unknown Source:53) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at com.adayo.aaop_deviceservice.service.BurialPointService.onCreate(Unknown Source:10) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at android.app.ActivityThread.handleCreateService(ActivityThread.java:4209) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at android.app.ActivityThread.access$1600(ActivityThread.java:238) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at android.os.Handler.dispatchMessage(Handler.java:106) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at android.os.Looper.loop(Looper.java:223) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at android.app.ActivityThread.main(ActivityThread.java:7731) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at java.lang.reflect.Method.invoke(Native Method) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 07-20 19:57:33.402 2248 2248 I BurialPointService1: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) private void createBackgroundToQnx() { int displayId = 1; DisplayManager dm = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE); Display display = dm.getDisplay(displayId); if (display == null || !display.isValid()) { Log.e(TAG, "Invalid display: " + displayId); return; } try { Context displayContext = getApplicationContext().createDisplayContext(display); Presentation presentation = new Presentation(displayContext, display); View view = new View(this); view.setBackgroundColor(Color.BLACK); presentation.setContentView(view); presentation.show(); } catch (WindowManager.InvalidDisplayException e) { Log.i(TAG, "Failed to show presentation on display: " + display, e); } }
最新发布
08-08
07-20 19:57:33.608 2261 2261 I BurialPointService1: Failed to show presentation on display: Display id 1: DisplayInfo{"内置屏幕", displayId 1, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS, FLAG_TRUSTED, real 1920 x 720, largest app 1920 x 1920, smallest app 720 x 720, appVsyncOff 1000000, presDeadline 16666666, mode 2, defaultMode 2, modes [{id=2, width=1920, height=720, fps=60.000004}], hdrCapabilities HdrCapabilities{mSupportedHdrTypes=[], mMaxLuminance=500.0, mMaxAverageLuminance=500.0, mMinLuminance=0.0}, minimalPostProcessingSupported false, rotation 0, state ON, type INTERNAL, uniqueId "local:130", app 1920 x 720, density 160 (167.013 x 167.779) dpi, layerStack 1, colorMode 0, supportedColorModes [0], address {port=130}, deviceProductInfo null, removeMode 0}, DisplayMetrics{density=1.0, width=1920, height=720, scaledDensity=1.0, xdpi=167.013, ydpi=167.779}, isValid=true 07-20 19:57:33.608 2261 2261 I BurialPointService1: android.view.WindowManager$InvalidDisplayException: Unable to add window android.view.ViewRootImpl$W@81df4e9 -- the specified display can not be found 07-20 19:57:33.608 2261 2261 I BurialPointService1: at android.view.ViewRootImpl.setView(ViewRootImpl.java:1099) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:409) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:109) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at android.app.Dialog.show(Dialog.java:342) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at android.app.Presentation.show(Presentation.java:257) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at com.adayo.aaop_deviceservice.service.BurialPointService.x(Unknown Source:105) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at com.adayo.aaop_deviceservice.service.BurialPointService.A(Unknown Source:50) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at com.adayo.aaop_deviceservice.service.BurialPointService.onCreate(Unknown Source:10) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at android.app.ActivityThread.handleCreateService(ActivityThread.java:4209) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at android.app.ActivityThread.access$1600(ActivityThread.java:238) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at android.os.Handler.dispatchMessage(Handler.java:106) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at android.os.Looper.loop(Looper.java:223) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at android.app.ActivityThread.main(ActivityThread.java:7731) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at java.lang.reflect.Method.invoke(Native Method) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 07-20 19:57:33.608 2261 2261 I BurialPointService1: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 07-20 19:57:33.665 2261 2724 I BurialPointService1: parseJsonToEvent: json = {"command":{"id":"ipc","sub":"poweron"},"content":{"totalmileage":0,"resmileage":0}} 07-20 19:57:33.665 2261 2724 I BurialPointService1: parseJsonToEvent: key = totalmileage, value = 0.0 07-20 19:57:33.666 2261 2724 I BurialPointService1: parseJsonToEvent: key = resmileage, value = 0 07-20 19:57:33.666 2261 2724 I BurialPointService1: sendSyncEvent: failed aAnalyticsManager is null! 07-20 19:57:34.408 2261 2261 I BurialPointService1: onServiceConnect 埋点连接成功! private void createBackgroundToQnx() { DisplayManager displayManager = (DisplayManager)this.getSystemService(Context.DISPLAY_SERVICE); Display[] displays = displayManager.getDisplays(); Log.i(TAG, "createBackgroundToQnx displays = " + Arrays.toString(displays)); for (Display display : displayManager.getDisplays()) { if (display.getDisplayId() != Display.DEFAULT_DISPLAY) { if (!display.isValid()) { Log.i(TAG, "createBackgroundToQnx display is invalid ! displayID = " + display.getDisplayId()); continue; } try { Presentation presentation = new Presentation(this, display); View view = new View(this); view.setBackgroundColor(Color.BLACK); presentation.setContentView(view); presentation.show(); } catch (WindowManager.InvalidDisplayException e) { Log.i(TAG, "Failed to show presentation on display: " + display, e); } } } }
08-07
01-01 00:16:20.586 20968 20968 E AndroidRuntime: FATAL EXCEPTION: main 01-01 00:16:20.586 20968 20968 E AndroidRuntime: Process: com.adayo.service.atsmode, PID: 20968 01-01 00:16:20.586 20968 20968 E AndroidRuntime: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? 01-01 00:16:20.586 20968 20968 E AndroidRuntime: at android.view.ViewRootImpl.setView(ViewRootImpl.java:1071) 01-01 00:16:20.586 20968 20968 E AndroidRuntime: at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:409) 01-01 00:16:20.586 20968 20968 E AndroidRuntime: at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:109) 01-01 00:16:20.586 20968 20968 E AndroidRuntime: at android.app.Dialog.show(Dialog.java:340) 01-01 00:16:20.586 20968 20968 E AndroidRuntime: at android.app.AlertDialog$Builder.show(AlertDialog.java:1131) 01-01 00:16:20.586 20968 20968 E AndroidRuntime: at android.widget.VideoView$5.onError(VideoView.java:615) 01-01 00:16:20.586 20968 20968 E AndroidRuntime: at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:3446) 01-01 00:16:20.586 20968 20968 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106) 01-01 00:16:20.586 20968 20968 E AndroidRuntime: at android.os.Looper.loop(Looper.java:223) 01-01 00:16:20.586 20968 20968 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7687) 01-01 00:16:20.586 20968 20968 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 01-01 00:16:20.586 20968 20968 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 01-01 00:16:20.586 20968 20968 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 01-01 00:16:21.454 20968 20968 I Process : Sending signal. PID: 20968 SIG: 9
08-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值