gpt4 book ai didi

android - 始终实例化 fragment 或保留对 fragment 的引用更好吗?

转载 作者:行者123 更新时间:2023-11-30 01:15:50 25 4
gpt4 key购买 nike

我正在创建一个在 ViewPager 中使用多个 fragment 的应用。

到目前为止,我总是为 ViewPager 提供它所需的每个 fragment 的新实例,因为谷歌开发人员的所有示例似乎都表明,这是正确的做法。

这些 fragment 使用它们的父 Activity 来检索它们的状态/数据并在 OnCreateView 中更新它们自己。

其中一个新 fragment 是 NewsFragment,它包含 NewsHeadersFragment 或 NewsArticleFragment,这两者需要进行通信。

我所做的是将消息 article_clicked(article) 从 NewsHeaderFragment 发送到我的 Activity(不幸的是我还没有找到与父 fragment 通信的方法)并且 Activity 向 NewsFragment 发送消息以更改其子 fragment

为了做到这一点,我似乎必须保留对 NewsFragment 的引用,所以我在想也许我不应该总是创建一个新的 fragment 实例。

我的问题是,是始终创建 NewsFragment 的新实例并仅更新引用更好,还是仅在引用为 null 时创建实例并始终返回引用更好。

即这样更好吗:

private static NewsFragment _news;
public static NewsFragment get_news_fragment() {
_news = NewsFragment.NewInstance();
return _news;
}

还是这个?

private static NewsFragment _news;
public static NewsFragment get_news_fragment() {
if (_news == null) _news = NewsFragment.NewInstance();
return _news;
}

在此先感谢您提供的任何帮助

最佳答案

我建议始终在需要时创建 fragment (如在谷歌开发人员示例中所做的那样),原因之一是防止潜在的 OutOfMemoryException。在 fragment/Activity 的生命周期之外保留对 fragment/Activity 的硬引用会使垃圾收集变得难以辨认,并为臭名昭著的 OOM 铺平道路。

对于您的场景,我建议您尝试使用某种 EventBus(发布/订阅机制)从您的 Activity 到 fragment 进行通信。

关于android - 始终实例化 fragment 或保留对 fragment 的引用更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37878430/

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