我想在我的活动和片段中获得RefWatcher对象,所以在我的主应用程序dagger模块中我做了
@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);
}
我得到错误
Caused by: java.lang.NullPointerException: Cannot return null from a non-@Nullable @Provides method
注入这个泄漏反应器的正确方法是什么?
因为refWathcer在此上下文中为null。尝试得到它:
@Override public void onCreate() {
super.onCreate();
refWatcher = LeakCanary.install(this);
}
在您的应用程序类中。但一般来说,在这种情况下使用匕首并不是一个好主意。安装LeakCanary后,您可以使用静态LeakCanary.installedRefWatcher()来获取refWatcher实例。