首页 > 解决方案 > 在片段 getActivity() 与 mActivity 参考中显示 toast

问题描述

在我的片段中调用一次 getActivity() 方法并将引用保存在 mActivity 中是否比每次我想显示 toast 消息时调用 getActivity() 更好?

Toast.makeText(mActivity, text, duration).show();

对比

Toast.makeText(getActivity(), text, duration).show();

标签: androidandroid-context

解决方案


getActivity()应该首选有两个原因:
1) 防止内存泄漏
有一个变量mActivity会为内存泄漏打开机会,例如错误地将变量设置为static,使得在一些运行的匿名中引用活动变得容易和方便AysncTask

2) 片段-活动关系的正确性质
片段可以在很多时候附加或分离。因此,应该按需获取托管当前片段的活动的引用。拥有mActivity变量意味着您需要正确设置和取消设置它。

请注意,Toast这里需要的是一个Context对象,所以它不一定是这里需要的活动。一个应用程序上下文对象也足够了


推荐阅读