我有一个单例类,我想将活动的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();
}

07-28 03:57