Fragments 中的工具栏正在泄漏
Toolbar inside Fragments is leaking
我有一个应用程序,每个 Fragment
都有一个单独的 toolbar
。然后应用程序使用 setSupportActionBar
方法将其设置为 Activity。显然这会导致 Fragment 布局在 onDestroyView
.
之后泄漏
我试过的是
设置 activity.setSupportActionBar(null)
会导致问题,因为 Navigation
库具有以下事件序列:创建新 Fragment 并调用 onDestroyView。所以将上面的代码放在 onDestroyView 中会导致 supportActiobBar
为空。
考虑拥有一个工具栏,这并不容易,因为需要进行重大重构,而且这不是我的个人项目。
将 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()
。
我有一个应用程序,每个 Fragment
都有一个单独的 toolbar
。然后应用程序使用 setSupportActionBar
方法将其设置为 Activity。显然这会导致 Fragment 布局在 onDestroyView
.
我试过的是
设置
activity.setSupportActionBar(null)
会导致问题,因为Navigation
库具有以下事件序列:创建新 Fragment 并调用 onDestroyView。所以将上面的代码放在 onDestroyView 中会导致supportActiobBar
为空。考虑拥有一个工具栏,这并不容易,因为需要进行重大重构,而且这不是我的个人项目。
将
toolbar
设置为空。不起作用,因为ViewBinding
不允许这样做。
问题是 - 在这种情况下是否有任何其他方法可以减轻内存泄漏。
根据 Fragment-owned app bar documentation:
When using a fragment-owned app bar, we strongly recommended using the
Toolbar
APIs directly. Do not usesetSupportActionBar()
and the Fragment menu APIs, which are appropriate only for activity-owned app bars.
在大多数情况下,您可以完全依赖 Toolbar
API,例如 inflateMenu
并完全跳过设置 setSupportActionBar()
。