我已经开始使用Dagger2来管理依赖项,我试图了解如何使用DI来提供单一的GoogleApiClient.对此的动机是:
>减少样板代码:多个活动&片段需要GoogleApiClient
>提高可测试性:目前这些活动和碎片未经过充分测试
我想在Application范围内提供Singleton 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(); }
然后管理您的活动的回电
@Inject GoogleApiClient mGoogleApiClient; if (mGoogleApiClient != null) { mGoogleApiClient.registerConnectionCallbacks(this); mGoogleApiClient.registerConnectionFailedListener`(this); }
我希望这对你有帮助.