Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you provide a GoogleApiClient dependency with Dagger2?

I've started using Dagger2 to manage dependencies and I'm trying to understand how I can use DI to provide a singleton GoogleApiClient. The motivations for this are:

  • reduce boilerplate code: multiple Activities & Fragments require a GoogleApiClient
  • improve testability: currently these Activities and Fragments are not well tested

I want to provide a Singleton GoogleApiClient at the Application scope.

How do you handle callbacks? Whether you choose an auto-managed or manually-managed connection, there are some callbacks that must be handled:

  • GoogleApiClient.ConnectionCallbacks (manual only)
  • GoogleApiClient.OnConnectionFailedListener (both)
like image 476
sidecarcat Avatar asked Mar 13 '16 16:03

sidecarcat


1 Answers

You can use the injection to create the client

 @Provides
    @Singleton
    GoogleApiClient providesGoogleApiClient(Context context) {
            return new GoogleApiClient.Builder(context)
                    .addApi(Places.GEO_DATA_API)
                    .addApi(LocationServices.API)
                    .build();
        }

And then manage the call backs on your activity

@Inject GoogleApiClient mGoogleApiClient;



if (mGoogleApiClient != null) {  mGoogleApiClient.registerConnectionCallbacks(this);            mGoogleApiClient.registerConnectionFailedListener`(this);
}

I hope this might help you.

like image 150
george_mx Avatar answered Oct 17 '22 03:10

george_mx