Как передать слабый интерфейсный тип активности в синглтон-класс - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть одноэлементный класс, и я хочу передать ему weak ссылку на действие.

Действие реализует интерфейс, и все действия будут реализовывать этот интерфейс, поэтому я хочу передать interface type в синглтон-класс.

Это то, что я делаю.

Интерфейс

public interface IAnalytics {

    String getAnalyticViewName();
}

Класс Singleton

  public static AnalyticsWrapper getInstance(WeakReference<IAnalytics> iAnalytics) {

        IAnalytics activityObject = iAnalytics.get();
        activityName = activityObject.getAnalyticViewName();
}

MainActivity

    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>

1 Ответ

0 голосов
/ 30 апреля 2018

WeakReference необходимо, когда вам нужно сохранить ссылку на контекст, такой как действие, но если вы используете контекст только в одном методе и возвращаете, тогда нет необходимости использовать WeakReference вообще. Просто используйте:

public static AnalyticsWrapper getInstance(IAnalytics iAnalytics) {
   activityName = iAnalytics.getAnalyticViewName();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...