Android - WindowManager 导致崩溃并显示“窗口数超过最大 300”

RH2*_*201 6 java memory android window-managers

我看到我的日志软件中报告了此错误,但无法确定导致该错误的原因,或者 300 限制指的是什么...视图数或列表中可能显示的项目数...

这就是我可以从日志中获取的全部内容:

window count is over max 300
android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:430)
android.view.WindowManagerImpl.addView(WindowManagerImpl.java:133)
android.widget.PopupWindow.invokePopup(PopupWindow.java:1688)
android.widget.PopupWindow.showAtLocation(PopupWindow.java:1408)
android.widget.PopupWindow.showAtLocation(PopupWindow.java:1374)
Run Code Online (Sandbox Code Playgroud)

我在任何 Dialog 或 PopupWindow 上做了一些研究和大量调试,但无法重新创建它。任何想法或建议将不胜感激。

编辑 我能够使用不同的堆栈跟踪再次出现此问题......

window count is over max 300 
android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:430)
android.view.WindowManagerImpl.addView(WindowManagerImpl.java:133)
android.app.ActivityThread.handleResumeActivity(ActivityThread.java:5322)
android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:54)
android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:2438)
android.os.Handler.dispatchMessage(Handler.java:106)
android.os.Looper.loopOnce(Looper.java:226)
android.os.Looper.loop(Looper.java:313)
android.app.ActivityThread.main(ActivityThread.java:8663)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
Run Code Online (Sandbox Code Playgroud)

编辑2

这似乎只发生在 Android 12 操作系统上

编辑3

Android 13 上似乎也会发生这种情况,错误消息略有不同

window count is over max!!
Run Code Online (Sandbox Code Playgroud)

小智 -1

我不确定您是否仍然面临这个问题。

实际上,当您打开 Windows 超过 300 个时,就会发生这种情况。

检查是否存在任何此类 for 或无限循环。