我正在尝试创建一个覆盖层并将视图附加到 WindowManager,我已经通过创建一个实现 Lifecycle/ViewModelStore/SavedStateRegistry Owner 的类来设法做到这一点。\n但由于某种原因,每当我尝试显示对话框/更改时以任何方式使用 MutableState 或 MutableStateFlow 重组的 UI 都不会触发。
\n有没有人尝试过做这样的事情并设法找到触发重组的解决方案?
\n这就是我尝试创建和插入视图的方式:
\n@SuppressLint("InflateParams")\nfun showOverlay() {\n synchronized(lock) {\n if (overlay != null || overlay?.parent != null) {\n return\n }\n val viewModel = OverlayViewModel(context.applicationContext as Application)\n var scope: CoroutineScope? = null\n overlay = ComposeView(context).apply {\n setContent {\n Overlay(viewModel)\n }\n }\n drawOverLifecycleOwner = DrawOverLifecycleOwner()\n drawOverLifecycleOwner?.attachToDecorView(overlay)\n val params =\n WindowManager.LayoutParams(\n WindowManager.LayoutParams.MATCH_PARENT,\n WindowManager.LayoutParams.MATCH_PARENT,\n WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,\n WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,\n PixelFormat.TRANSLUCENT\n )\n params.gravity = Gravity.TOP or Gravity.START\n Log.i("ScreenLocker", "Inserting overlay")\n ContextCompat.getMainExecutor(context).execute {\n …Run Code Online (Sandbox Code Playgroud) android kotlin android-jetpack-compose compose-recomposition