繁体   English   中英

在片段getActivity()与mActivity参考中显示吐司

[英]Display toast in fragment getActivity() vs mActivity reference

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

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

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

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

2)片段活动关系的正确性质
片段可以在很多时候连接或分离。 因此,越来越托管当前片段活动的参考应该是在按需的基础 拥有mActivity变量意味着您需要正确设置和取消设置它。

请注意, Toast在这里需要的是一个Context对象,因此在这里并不一定是必需的活动。 应用程序上下文对象也足够

明智的片段都是相同的

第一

活动mActivity = getActivity();

@Override
public void onClick(View arg0) {

Toast.makeText(**mActivity**,"Text!",Toast.LENGTH_SHORT).show();

}

第二个

像这样直接使用

    Toast.makeText(getActivity(),"Text!",Toast.LENGTH_SHORT).show();

如果您只需要上下文或活动,则没有区别。 但是,如果要访问父活动中的某些方法或字段,则最好将引用保存在mActivity中。

如果您只想让上下文显示Toast消息并且很难获得对Activity的引用,则可以使用getApplicationContext()代替。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM