2016-03-13 10 views
6

私はDagger2を使用して依存関係を管理し始めました.DTを使ってシングルトンのGoogleApiClientを提供する方法を理解しようとしています。この動機は、以下のとおりです。Dagger2にどのようにGoogleApiClient依存関係を提供しますか?

  • は、定型的なコード削減:複数の活動を&フラグメントがGoogleApiClientが
  • テスト容易を向上させる必要です。現在、これらの活動とフラグメントが十分にテストされていない

私が欲しいですアプリケーションスコープでSingleton GoogleApiClientを提供します。

どのようにコールバックを処理しますか?あなたがauto-managed or manually-managed connectionを選択するかどうか、処理しなければならないいくつかのコールバックがあります:あなたがに注入を使用することができます(唯一のマニュアル)

  • GoogleApiClient.ConnectionCallbacks
  • GoogleApiClient.OnConnectionFailedListener(両方)

答えて

3

は、クライアントを作成する

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

私は、これはあなたを助けるかもしれない願っています。

+0

リスナーを登録/登録解除するには、 'onResume()'と 'onPause()'は正しい場所ですか? – sidecarcat

+0

あなたのサンプルプロバイダメソッドは、クライアントを作成します(あなたの文言が示唆するように、ビルダーだけでなく)。 – sidecarcat

+0

@sidecarcatはい、あなたは正しいです、それはクライアントを提供します。通常、切断はonStop()で呼び出され、onStartではconnect –

関連する問題