如何为 Dagger2 提供 GoogleApiClient 依赖项?
How do you provide a GoogleApiClient dependency with Dagger2?
我已经开始使用 Dagger2 来管理依赖项,并且我正在尝试了解如何使用 DI 来提供单例 GoogleApiClient。这样做的动机是:
- 减少样板代码:多个活动和片段需要一个 GoogleApiClient
- 提高可测试性:目前这些Activity和Fragments没有经过很好的测试
我想在应用程序范围内提供单例 GoogleApiClient。
你如何处理回调?无论你选择auto-managed or manually-managed connection,有一些回调必须处理:
- GoogleApiClient.ConnectionCallbacks(仅限手册)
- GoogleApiClient.OnConnectionFailedListener(两者)
您可以使用注入创建客户端
@Provides
@Singleton
GoogleApiClient providesGoogleApiClient(Context context) {
return new GoogleApiClient.Builder(context)
.addApi(Places.GEO_DATA_API)
.addApi(LocationServices.API)
.build();
}
然后管理 activity
上的回电
@Inject GoogleApiClient mGoogleApiClient;
if (mGoogleApiClient != null) { mGoogleApiClient.registerConnectionCallbacks(this); mGoogleApiClient.registerConnectionFailedListener`(this);
}
希望对您有所帮助。
我已经开始使用 Dagger2 来管理依赖项,并且我正在尝试了解如何使用 DI 来提供单例 GoogleApiClient。这样做的动机是:
- 减少样板代码:多个活动和片段需要一个 GoogleApiClient
- 提高可测试性:目前这些Activity和Fragments没有经过很好的测试
我想在应用程序范围内提供单例 GoogleApiClient。
你如何处理回调?无论你选择auto-managed or manually-managed connection,有一些回调必须处理:
- GoogleApiClient.ConnectionCallbacks(仅限手册)
- GoogleApiClient.OnConnectionFailedListener(两者)
您可以使用注入创建客户端
@Provides
@Singleton
GoogleApiClient providesGoogleApiClient(Context context) {
return new GoogleApiClient.Builder(context)
.addApi(Places.GEO_DATA_API)
.addApi(LocationServices.API)
.build();
}
然后管理 activity
上的回电@Inject GoogleApiClient mGoogleApiClient;
if (mGoogleApiClient != null) { mGoogleApiClient.registerConnectionCallbacks(this); mGoogleApiClient.registerConnectionFailedListener`(this);
}
希望对您有所帮助。