gpt4 book ai didi

java - YouTubePlayer.Provider 初始化方法引起的内存泄漏

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:30 26 4
gpt4 key购买 nike

使用 Eclipse Memory Analyzer 我发现如果我在 2 个 Activity (例如 A 和 B)之间来回切换,虽然调用了 Activity B 的 onDestroy 方法,但 GC 永远不会将其从内存中删除,所以我有多个 Activity B 实例在内存中。我发现问题出在 YouTubePlayerFragment 实例上调用的初始化方法中。这是代码:

YouTubePlayerFragment ytpf =(YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtube_fragment);

ytpf.initialize(DEVELOPER_KEY,this);

this 是 fragment 发生的 Activity ,并实现 YouTubePlayer.OnInitializedListener

如何释放传递给初始化方法的回调?

我尝试调用 youtubePlayer.release() 但问题仍然存在。

最佳答案

这周我被这个漏洞击中了。不管ticket's status如何,谷歌似乎仍然没有修复它.我对我的初始项目进行了一些测试,泄漏导致了 OOM,并在 demo project by Google 上进行了测试。 .我的观察是:

  • 导致泄漏的不是监听器 YouTubePlayer.OnInitializedListener。调用 YouTubePlayerFragment.initialize() 时,YouTubePlayerFragment 中的调用获取对托管 fragment 的 Activity 的引用。因此,在 fragment 停止时尝试使用空静态监听器调用 initialize() 并希望清除引用时,运气不佳。
  • 虽然肯定存在泄漏,但似乎在某个时候正在进行清理工作。我会去 18 个相同 Activity 的实例,然后计数会下降到 8 个实例。所以我想在大多数情况下,泄漏可能不会被注意到。
  • YouTubePlayerFragment& YouTubePlayerView,同样的泄漏。

我没有看到任何解决方法。我想我将不得不使用另一种实现,基于像这样的 webview:https://github.com/PierfrancescoSoffritti/Android-YouTube-Player

关于java - YouTubePlayer.Provider 初始化方法引起的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27128084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com