Maa*_*ten 5 android memory-leaks android-fragments
在阅读Fragments时,我遇到了与活动进行通信的这一部分,其中包含以下代码片段:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnArticleSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
}
}
Run Code Online (Sandbox Code Playgroud)
不知怎的,我觉得碎片不应该包含对它们的引用Activity,但我真的不知道这种直觉来自何处.
感觉好像上面的代码可引起了内存泄漏时setRetainInstance()被设定为true,因Activity而可以在取向变化重新启动Fragment被保留,包含旧的参考Activity.(这是真的?)
但这种模式是否可以安全地使用setRetainInstance()set false?
不知怎的,我觉得片段不应该包含对其活动的引用,
他们已经这样做了。否则该getActivity()方法就无法发挥作用。
我觉得当 setRetainInstance() 设置为 true 时,上面的代码可能会导致内存泄漏,因为 Activity 可能会在方向更改时重新启动,而 Fragment 被保留,包含对旧 Activity 的引用。(这是真的?)
onAttach()对于新活动,将再次调用,因此虽然您会非常短暂地泄漏内存,但我不会担心它。
| 归档时间: |
|
| 查看次数: |
282 次 |
| 最近记录: |