Fragments 中的工具栏正在泄漏

Toolbar inside Fragments is leaking

我有一个应用程序,每个 Fragment 都有一个单独的 toolbar。然后应用程序使用 setSupportActionBar 方法将其设置为 Activity。显然这会导致 Fragment 布局在 onDestroyView.

之后泄漏

我试过的是

  1. 设置 activity.setSupportActionBar(null) 会导致问题,因为 Navigation 库具有以下事件序列:创建新 Fragment 并调用 onDestroyView。所以将上面的代码放在 onDestroyView 中会导致 supportActiobBar 为空。

  2. 考虑拥有一个工具栏,这并不容易,因为需要进行重大重构,而且这不是我的个人项目。

  3. toolbar 设置为空。不起作用,因为 ViewBinding 不允许这样做。

问题是 - 在这种情况下是否有任何其他方法可以减轻内存泄漏。

根据 Fragment-owned app bar documentation:

When using a fragment-owned app bar, we strongly recommended using the Toolbar APIs directly. Do not use setSupportActionBar() and the Fragment menu APIs, which are appropriate only for activity-owned app bars.

在大多数情况下,您可以完全依赖 Toolbar API,例如 inflateMenu 并完全跳过设置 setSupportActionBar()