7

Dagger2 を使用して依存関係を管理し始めました。DI を使用してシングルトンの GoogleApiClient を提供する方法を理解しようとしています。その動機は次のとおりです。

  • 定型コードを減らす: 複数のアクティビティとフラグメントには GoogleApiClient が必要です
  • テスト容易性の向上: 現在、これらのアクティビティとフラグメントは十分にテストされていません

Application スコープで Singleton GoogleApiClient を提供したいと考えています。

コールバックをどのように処理しますか? 自動管理接続または手動管理接続のいずれを選択する場合でも、処理する必要があるコールバックがいくつかあります。

  • GoogleApiClient.ConnectionCallbacks (手動のみ)
  • GoogleApiClient.OnConnectionFailedListener (両方)
4

1 に答える 1

7

インジェクションを使用してクライアントを作成できます

 @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);
}

これがお役に立てば幸いです。

于 2016-03-17T20:03:53.737 に答える