前言: 最近牵头发起公司app的重构工作,如何通过重构让项目的耦合降低、开发效率提高,一直是我努力的方向,今天来学习一下一个注解框架Dagger2,然后看看如何使用它来降低项目的耦合。 Dagger2 一句话:一款快速的注解框架,应用于Android、Java,由 Google 开发和维护,是 Square 的 Dagger 项目的分支。 gitHub:https://github.com/google/dagger Dagger2采用依赖注入方式,依赖注入是一种面向对象的编程模式,...
我能够在活动及其工作中注入依赖性.但是在片段中调用相同的依赖项不会获得访问权限.
这就是我所做的.
应用程式Javapublic class App extends MultiDexApplication implements HasActivityInjector, HasFragmentInjector {@InjectDispatchingAndroidInjector<Activity> activityInjector;@InjectDispatchingAndroidInjector<Fragment> fragmentInjector;private AppComponent mComponent;@Overridepublic void onCreate() {super.on...
我是Android开发中的新手,也是DI中的新手.我在个人项目中使用Kotlin,我正在尝试使用Dagger 2.我设法将它设置为一个util类,但是我需要有一个上下文来使用它来注入一个需要上下文的类(一个sharedpref manager)我失败了.这是我的代码,这是我得到的错误(NPE).先感谢您.
我的模块类package com.android.pineimport android.content.Context
import com.android.pine.utils.SharedPreferencesManager
import dagger.Module
import dagger...
从这里查看Android架构蓝图“todo-mvp-dagger”:https://github.com/googlesamples/android-architecture.
我正在尝试理解Dagger2实现,我似乎无法弄清楚他们如何让Dagger2提供TasksRepository.
他们有@Provides用于“provideTasksLocalDataSource”和“provideTasksRemoteDataSource”,但实际的TaskRepository是哪一个?
在TodoApplication类中,他们有:@Inject
TasksRepository tasksRepository;怎么能在没有@Provides的情况下注...
我在我的Android应用程序中恭维Dagger 2.我按以下方式设置它:
AppComponent.java@Singleton
@Component(modules = {AndroidInjectionModule.class,AndroidSupportInjectionModule.class,ActivityBuilder.class,AppModule.class,DataBaseDaoModule.class
})public interface AppComponent {@Component.Builderinterface Builder {@BindsInstanceBuilder application(Application aApplication);AppComponent build();}Application ...
我有一个app模块(这是我的应用程序)和一个java库项目模块(称为api)我想在api模块中使用dagger 2但是注释处理器不工作,匕首前缀类(例如DaggerApiComponent)并没有像人们期望的那样产生.任何帮助将不胜感激,是的,我正在使用gradle.解决方法:最后我设法解决了这个问题,gradle的android-apt插件只有在应用插件时才可用:’com.android.application’被使用.所以在你不能使用com.android.application插件的java库中你需要使用插件apply ...
我是否需要包装Android SharedPreferences类?如果是的话,能否请您提供一个简单的工作示例?
我知道如何使用SharedPreferences,但是当涉及到包装它并提供Dagger 2和RxJava2时,我很困惑.解决方法:我通常只使用名为LocalStorage的接口或类似的东西来包装它.然后将一个Context注入实现并像往常一样实现您的SharedPreferences.如果你想使用Rx,只需确保你的接口方法返回Observables.
然后,只要你需要使用SharedPeferences,只需注入一个L...
我使用@ContributesAndroidInjector注释(https://google.github.io/dagger/android.html)进行了有效的Dagger设置.Component Application/ \
Subcomponent DrawerActivity Subcomponent SubActivity|
Subcomponent DrawerFragment在SubActivity和DrawerActivity中,我使用标记为@Singleton的相同存储库实例.@Singleton
@Component(modules = {AndroidInjectionModule.class,AppModule.class,ActivityBuilderMo...
前言提起hook概念,相信大家都听说过,然后hook就是将反射和动态代理运用于Android平台源码之上的。可是,反射的应用场景缺非常广泛,注解的内容也同样需要使用反射去获取,所以反射是我们Android开发者必须要学习的知识。反射什么是反射?反射 (Reflection) 是 Java 的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性简而言之,通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员...
前言对于注解,相信大家都不陌生了,但是这种熟悉对于Android开发者来说,也就是仅仅是它认识你,你不认识它吧,因为,我们几乎都停留在用上了。像dagger2,像retrofit,像greenDao,他们都是满满的使用了注解,而我们只是停留在知其然缺不知其所以然的层面,那么我本次分享讲分成几批博客共享给大家一个体系的又不失针对Android平台需要的恰到好处的给大家整理真正需要掌握的知识体系。注解注解的定义Java 注解用于为 Java 代码提...