gpt4 book ai didi

android - 这个 Android 示例是否可以安全使用,内存泄漏方面?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:59 24 4
gpt4 key购买 nike

在阅读 Fragments 时,我在 communicating with the activity 上看到了这一部分,其中包含以下代码 fragment :

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnArticleSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
}
}

不知何故,我觉得 fragment 不应该包含对其 Activity 的引用,但我真的不知道这种直觉从何而来。

我觉得当 setRetainInstance() 设置为 true 时,上面的代码可能会导致内存泄漏,因为 Activity 可能会在方向改变,同时 Fragment 被保留,包含对旧 Activity 的引用。 (这是真的吗?)

但是当 setRetainInstance() 设置为 false 时,这种模式可以安全使用吗?

最佳答案

Somehow I have the feeling that fragments shouldn't contain a reference to their Activity,

他们已经这样做了。否则,getActivity() 方法将无法工作。

I feel like the code above can cause a memory leak when setRetainInstance() is set to true, because the Activity may restart on orientation change while the Fragment is retained, containing a reference to the old Activity. (Is this true?)

onAttach() 将针对新 Activity 再次调用,因此虽然您会非常短暂地泄漏内存,但我不会担心。

关于android - 这个 Android 示例是否可以安全使用,内存泄漏方面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20670382/

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