匕首线切割图纸下载
如果您每次注入都创建一个新的ApplicationComponent,那么您将在注入的每个位置获得一个新实例; 并且您实际上不会在期望单身的地方拥有单身人士。 ApplicationComponent应该由Application管理,并可以在整个应用程序中访问,而Activity与它的创建无关。
快速检查后,我只能同意。 Singleton模式仅适用于特定的@Component
上下文,并且每次调用时都会创建一个:
DaggerXXXComponent.create();
因此,唯一的问题是实例化该组件一次,并将其存储在应用程序中每个类可用的范围内。 猜猜是什么,这个范围存在:仅需要两个简单步骤。
- 扩展
Application
类,并在onCreate()
方法中,创建一个新的XXXComponent
实例并将其存储为静态属性。publicclassGlobalextendsApplication{ privatestaticApplicationComponentapplicationComponent; publicstaticApplicationComponentgetApplicationComponent(){ returnapplicationComponent; } @Override publicvoidonCreate(){ super.onCreate(); applicationComponent=DaggerApplicationComponent.create(); } }
- 下一步是将创建的类连接到Android清单中的应用程序生命周期中:
<?xml version="1.0" encoding="utf-8"?> <manifestxmlns:android="http://schemas.android.com/apk/res/android"package="ch.frankel.todo"> <applicationandroid:name=".shared.Global"> ... </application> </manifest>
在这一点上,用法非常简单。 将本文的第一段替换为:
Global.getApplicationComponent();
这样可以在Dagger 2中实现真正的单例。
匕首线切割图纸下载