应用程序中所有活动的 WindowManager

WindowManager for all activities in an application

我的最终目标是使用 WindowManager 并向其添加将在我的整个应用程序中持续存在的视图(不使用 TYPE_SYSTEM_OVERLAY 需要 API >=23 中的用户的特殊许可) .

我目前做的是:

  1. 在该应用启动时注册 ActivityLifecyclerCallback
  2. 将我想要保留的视图添加到 windowManager 并在旁边保留它们的列表。
  3. 每次 activity 恢复时,我都会这样做:
    1. 调用currentActivity.getWindowManager()
    2. 获取当前activity的WindowManager
    3. 重新充气并召回 wm.addView(..) 之前添加的所有 windows。

但是,无论我做什么,调用 addView 时都不会添加 windows,就像 window 管理器只是忽略该调用一样..

我正在使用 TYPE_APPLICATION 作为 windows。

我尝试使用 currentActivity.getSystemService(WINDOW_MANAGER) 而不是 currentActivity.getWindowManager()

谁能告诉我为什么?

与所有信念相反 TYPE_APPLICATION_ATTACHED_WINDOWTYPE_APPLICATION 或任何包含 APPLICATION 一词的东西(顺便说一下,这是有道理的)是​​ NOT要走的路。

我不知道为什么,如果有 Google 工程师 来回答那会很好,但解决方案是使用 TYPE_TOAST (?!?!?)

还要确保在活动之间切换时从新的 activity 获得一个新的 WindowManager 实例,这样如果您添加 windows 或删除它们,它就是一个有效的实例。

谢谢..命名约定缺乏好的文档浪费了 4 个小时:)