タグ付けされた質問 「dagger-2」

4
Dagger 2サブコンポーネントとコンポーネントの依存関係
Dagger 1のplus()方法は、以前のアプリケーションでかなり頻繁に使用したものであるため、親グラフバインディングへの完全なアクセス権を持つサブコンポーネントが必要になる状況を理解しています。 どのような状況で、サブコンポーネントの依存関係の代わりにコンポーネントの依存関係を使用することが有益ですか?なぜですか?
135 dagger  dagger-2 

1
Dagger 2のコンポーネント(オブジェクトグラフ)のライフサイクルを決定するものは何ですか?
私はDagger 2のスコープ、特にスコープ付きグラフのライフサイクルに頭を抱えようとしています。スコープを離れたときにクリーンアップされるコンポーネントをどのように作成しますか。 Androidアプリケーションの場合、Dagger 1.xを使用すると、通常、アクティビティレベルで子スコープを作成するために拡張するアプリケーションレベルにルートスコープがあります。 public class MyActivity { private ObjectGraph mGraph; public void onCreate() { mGraph = ((MyApp) getApplicationContext()) .getObjectGraph() .plus(new ActivityModule()) .inject(this); } public void onDestroy() { mGraph = null; } } 子スコープへの参照を保持している限り、子スコープは存在しました。この場合は、アクティビティのライフサイクルでした。onDestroyで参照を削除することで、スコープ付きグラフがガベージコレクションされるのを自由にできるようになりました。 編集 ジェシー・ウィルソンは最近メジャーカルパを投稿しました Dagger 1.0はスコープ名をひどく台無しにしています... @Singletonアノテーションはルートグラフとカスタムグラフの両方に使用されているため、実際のスコープが何かを理解するのは難しいです。 そして、私が読んだり聞いたりしたすべてのことは、スコープの動作を改善するDagger 2に向けられていますが、その違いを理解するのに苦労しています。以下の@Kirill Boyarshinovのコメントによると、コンポーネントまたは依存関係のライフサイクルは、通常どおり、具体的な参照によって決定されます。では、Dagger 1.xスコープと2.0スコープの違いは、純粋に意味の明確さの問題ですか? 私の理解 ダガー1.x 依存関係はどちら@Singletonかでした。これは、ルートグラフとサブグラフの依存関係にも同様に当てはまり、依存関係がどのグラフにバインドされているかが曖昧になります(「ダガー内」は、キャッシュされたサブグラフ内のシングルトンであるか、新しいアクティビティサブグラフのときに常に再作成されますか?構築されていますか?) ダガー2.0 カスタムスコープを使用すると、意味的に明確なスコープを作成できますが、機能的に@SingletonはDagger 1.xでの適用と同等です。 // …
134 java  dagger-2  lifecycle 

22
エラー:プログラムタイプはすでに存在しています:android.support.design.widget.CoordinatorLayout $ Behavior
プロジェクトのビルド中に次のエラーが発生します。このプロジェクトではCoordinatorLayoutを使用していません。build.gradleに依存関係として追加されました: Android Studio 3.2 Canary 4を使用しています。 LogCat AGPBI:{"kind": "error"、 "text": "すでに存在するプログラムタイプ:android.support.design.widget.CoordinatorLayout $ Behavior"、 "sources":[{}]、 "tool": "D8" }:app:transformDexArchiveWithExternalLibsDexMergerForDebug FAILED FAILURE:ビルドが例外により失敗しました。*問題点:タスク ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'の実行が失敗しました。 com.android.builder.dexing.DexArchiveMergerException:dexアーカイブのマージ中にエラーが発生しました:/windows/Other/app/build/intermediates/transforms/dexBuilder/debug/0.jar、/ windows / Other / app / build / intermediates / transforms / dexBuilder / debug / 1.jar、/ windows / Other / app / build / intermediates / transforms / …

2
AndroidプロジェクトでDAGGER依存性注入を最初からセットアップする方法は?
ダガーの使い方は?Androidプロジェクトで機能するようにDaggerを構成するにはどうすればよいですか? AndroidプロジェクトでDaggerを使用したいのですが、混乱します。 編集:Dagger2も2015年4月15日からリリースされており、さらに混乱しています! [この質問は「スタブ」であり、Dagger1についてさらに学び、Dagger2についてさらに学びながら、私は私の答えに追加しています。この質問は、「質問」というよりはガイドにすぎません。]

14
Android MVVMViewModelでコンテキストを取得する方法
AndroidアプリにMVVMパターンを実装しようとしています。ViewModelsには(テストを簡単にするために)Android固有のコードを含めるべきではないことを読みましたが、さまざまなこと(xmlからのリソースの取得、設定の初期化など)にコンテキストを使用する必要があります。これを行うための最良の方法は何ですか?AndroidViewModelアプリケーションコンテキストへの参照があるのを見ましたが、Android固有のコードが含まれているため、ViewModelに含める必要があるかどうかはわかりません。また、これらはアクティビティライフサイクルイベントに関連付けられていますが、コンポーネントのスコープを管理するために短剣を使用しているため、それがどのように影響するかはわかりません。私はMVVMパターンとDaggerを初めて使用するので、助けていただければ幸いです。

5
短剣-各アクティビティ/フラグメントの各コンポーネントとモジュールを作成する必要があります
私はしばらくの間dagger2を使用しています。そして、アクティビティ/フラグメントごとに独自のコンポーネント/モジュールを作成するかどうか混乱しました。これを明確にするのを手伝ってください: たとえば、アプリがあり、そのアプリには約50の画面があります。MVPパターンとDagger2forDIに従ってコードを実装します。50のアクティビティと50のプレゼンターがいるとします。 私の意見では、通常、次のようにコードを整理する必要があります。 アプリが開いている間に使用されるすべてのオブジェクトを提供するAppComponentとAppModuleを作成します。 @Module public class AppModule { private final MyApplicationClass application; public AppModule(MyApplicationClass application) { this.application = application; } @Provides @Singleton Context provideApplicationContext() { return this.application; } //... and many other providers } @Singleton @Component( modules = { AppModule.class } ) public interface AppComponent { Context getAppContext(); Activity1Component …

5
Dagger2.2コンポーネントビルダーモジュールメソッドは非推奨
dagger 2.2の使用を開始しましたが、コンポーネントビルダーのモジュールメソッドは非推奨になりました。 これは私のアプリケーションコンポーネントです: @Component(modules = ApplicationModule.class) public interface ApplicationComponent { void inject(Application application); } そしてアプリケーションモジュール: @Module public class ApplicationModule { Application application; public ApplicationModule(Application application) { this.application = application; } @Provides @Singleton Application providesApplication() { return application; } } 生成されたクラスは次のとおりです。 @Generated( value = "dagger.internal.codegen.ComponentProcessor", comments = "https://google.github.io/dagger" ) public final …
81 android  dagger-2 

2
Dagger 2を使用してViewPager内に同じフラグメントのViewModelを挿入する方法
プロジェクトにDagger 2を追加しようとしています。フラグメントにViewModels(AndroidXアーキテクチャコンポーネント)を注入することができました。 私が持っている同じフラグメントの2つのインスタンスがあるViewPager(各タブの軽微な変更)と、各タブで、私が観察していますLiveData(API)からのデータの変更に更新されますすることを。 問題は、API応答が来てを更新するとLiveData、現在表示されているフラグメントの同じデータがすべてのタブのオブザーバーに送信されることです。(これはおそらくのスコープが原因であると思いますViewModel)。 これは私が私のデータを観察している方法です: override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) activityViewModel.expenseList.observe(this, Observer { swipeToRefreshLayout.isRefreshing = false viewAdapter.setData(it) }) .... } このクラスを使用してViewModels を提供しています: class ViewModelProviderFactory @Inject constructor(creators: MutableMap<Class<out ViewModel?>?, Provider<ViewModel?>?>?) : ViewModelProvider.Factory { private val creators: MutableMap<Class<out ViewModel?>?, Provider<ViewModel?>?>? = creators override fun <T : ViewModel?> create(modelClass: Class<T>): T { …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.