Tag: 匕首

Dagger 2 – 使用@Named无法正常注入多个相同类型的对象

我的模块: @Module public class TcpManagerModule { private ITcpConnection eventsTcpConnection; private ITcpConnection commandsTcpConnection; public TcpManagerModule(Context context) { eventsTcpConnection = new EventsTcpConnection(context); commandsTcpConnection = new CommandsTcpConnection(context); } @Provides @Named(“events”) public ITcpConnection provideEventsTcpConnection() { return eventsTcpConnection; } @Provides @Named(“commands”) public ITcpConnection provideCommandsTcpConnection() { return commandsTcpConnection; } } 零件: @Component(modules = TcpManagerModule.class) public interface TcpManagerComponent { void inject(ITcpManager tcpManager); […]

Android Dagger 2 Dependency没有被注入

我正在尝试将Dagger 2用于我的应用程序,但我遇到了有关实体存储库的一些问题,而且我还没有弄明白我错过了什么。 这是我的应用程序组件: @Singleton @Component( modules = { AndroidModule.class, RepositoryModule.class } ) public interface ApplicationComponent { void inject(AndroidApplication app); IDependenceyRepository dependencyRepository(); } 我的模块: @Module public class RepositoryModule { @Provides @Singleton IDependenceyRepository provideDependendencyRepository(Context context) { return new DependencyRepository(context); } } @Module public class AndroidModule { private final AndroidApplication app; public AndroidModule(AndroidApplication app) { this.app = app; […]

我什么时候应该使用Factory 而不是Provider

Dagger文档显示使用Provider来获取Filter实例,这看起来非常有意义。 我正在编写一个实例化View的ListAdapter ,我希望Dagger能够注入。 我很想将Provider注入我的ListAdapter ,并调用mViewProvider.get()来实例化视图。 但是,Dagger文档说: 注入Provider可能会产生令人困惑的代码,并且可能是图形中错误范围或错误结构对象的设计气味。 通常你会想要使用Factory或Lazy或重新组织你的代码的生命周期和结构,以便能够注入一个T 我可以看到我如何使用工厂,以类似于使用辅助注射时所需的方式。 但是,使用我自己的Factory有什么好处,而不是使用Dagger的Provider ,因为我必须自己写这个?

Dagger 2:使用@Named获取同一对象的多个实例时出错

我怎么能得到像光标一样的多个相同返回类型的实例 例如 :- Module @CursorScope public class CursorModule { @Provides Cursor provideSongCursor( @Named(“Song”) Musician musician) { return musician.getApplicationContext().getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, new String[]{ BaseColumns._ID, MediaStore.Audio.AudioColumns.TITLE, MediaStore.Audio.AudioColumns.ARTIST, MediaStore.Audio.AudioColumns.ALBUM, MediaStore.Audio.AudioColumns.DURATION }, MediaStore.Audio.AudioColumns.IS_MUSIC + “=1”, null, null); } @Provides Cursor provideAlbumCursor( @Named(“Album”) Musician musician) { return musician.getApplicationContext().getContentResolver().query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, new String[]{ BaseColumns._ID, MediaStore.Audio.AlbumColumns.ALBUM, MediaStore.Audio.AlbumColumns.ARTIST, MediaStore.Audio.AlbumColumns.NUMBER_OF_SONGS, MediaStore.Audio.AlbumColumns.FIRST_YEAR }, null, null, null); } @Provides Cursor […]

寻找Dagger辅助注射的例子

从匕首讨论@ : 我有一个类从对象图中获取一些依赖项,并在运行时从调用者获取其他依赖项。 public class ImageDownloader { // Get these dependencies from the injector. private final HttpClient httpClient; private final ExecutorService executorService; // Get these from the caller. private final URL imageUrl; private final ImageCallback callback; … } 我提出了一个解决方案,我定义了一个工厂, public class ImageDownloader { … public static class Factory { private final HttpClient httpClient; private final […]