我有一个单例类,我想将活动的weak
引用传递给它。
该活动正在实现一个接口,并且所有活动都将在实现此接口,因此我想将interface type
传递给单例类。
这就是我在做什么。
接口
public interface IAnalytics {
String getAnalyticViewName();
}
单身人士班
public static AnalyticsWrapper getInstance(WeakReference<IAnalytics> iAnalytics) {
IAnalytics activityObject = iAnalytics.get();
activityName = activityObject.getAnalyticViewName();
}
主要活动
public class MainActivity extends AppCompatActivity implements IAnalytics{
private WeakReference<MainActivity> weakReference;
protected void onCreate(Bundle savedInstanceState) {
AnalyticsWrapper analyticsWrapper= AnalyticsWrapper.getInstance(weakReference);
}
}
问题是当我将
this
传递给AnalyticsWrapper
时,它说将getInstance()
类型更改为weakReference<MainActivity>
最佳答案
当需要保留对诸如活动之类的上下文的引用时,需要使用WeakReference
,但是如果仅在一种方法中使用该上下文并返回,则根本不需要使用WeakReference。只需使用:
public static AnalyticsWrapper getInstance(IAnalytics iAnalytics) {
activityName = iAnalytics.getAnalyticViewName();
}