Инъекция лейкоканала RefWatcher через Dagger 2 - PullRequest
0 голосов
/ 06 октября 2018

Я хочу, чтобы объект RefWatcher был доступен во всех моих действиях и фрагментах, поэтому в моем основном модуле кинжала приложения я сделал

@Provides
@AppScope
static RefWatcher provideRefWatcher(Application application) {
    return ((AppName) application).refWatcher;
}

, а в классе своего приложения я объявил

public class AppName extends DaggerApplication {

public RefWatcher refWatcher;
...
}

Однакокогда я внедряю в действие и использую как

public class MainActivity extends DaggerAppCompatActivity {

@Inject
RefWatcher refWatcher;

@Override
public void onDestroy() {
    super.onDestroy();
    refWatcher.watch(this);
}

Iam, получая ошибку

Caused by: java.lang.NullPointerException: Cannot return null from a non-@Nullable @Provides method

Как правильно ввести этот утечечный канальный рефватчер?

1 Ответ

0 голосов
/ 23 апреля 2019

Потому что refWathcer является нулевым в этом контексте.Попытайтесь получить это как:

  @Override public void onCreate() {
    super.onCreate();
    refWatcher = LeakCanary.install(this);
  }

в вашем классе приложения.Но, как правило, в этом случае использовать кинжал не очень хорошая идея.После установки LeakCanary вы можете использовать статический LeakCanary.installedRefWatcher () для получения экземпляра refWatcher.

...