Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Module
- public final class AndroidModule {
- private final Application mApplication;
- public AndroidModule(Application application) {
- mApplication = checkNotNull(application);
- }
- @Provides
- @Singleton
- Application providesApplication() {
- return mApplication;
- }
- }
- @Singleton
- @Component(modules = {
- AndroidModule.class
- })
- public interface ApplicationComponent {
- Application getApplication();
- @ApplicationContext
- Context getApplicationContext();
- }
- @Module(includes = {
- AndroidModule.class
- })
- public final class NetworkModule {
- private static final int DEFAULT_CACHE_SIZE = 10 * 1024 * 1024; // 10 Mib
- public NetworkModule() {
- // Default empty constructor
- }
- @Provides
- @Singleton
- Cache provideOkHttpCache(Application application) {
- return new Cache(application.getCacheDir(), DEFAULT_CACHE_SIZE);
- }
- @Provides
- @Singleton
- OkHttpClient provideOkHttpClient(Cache cache) {
- return new OkHttpClient.Builder().cache(cache).build();
- }
- }
- @Singleton
- @Component(modules = {
- NetworkModule.class
- })
- public interface FragmentComponent {
- void inject(MyFragment myFragment);
- }
- @Module
- public final class OsModule {
- public OsModule() {
- // Default empty constructor
- }
- @Provides
- @Singleton
- Handler provideMainHandler() {
- return new Handler(Looper.getMainLooper());
- }
- }
- @Singleton
- @Component(modules = {
- NetworkModule.class,
- OsModule.class
- })
- public interface PojoComponent {
- void inject(MyPojo myPojo);
- }
- public class MyApplication extends Application {
- private static ApplicationComponent sApplicationComponent;
- private static FragmentComponent sFragmentComponent;
- private static PojoComponent sPojoComponent;
- public static ApplicationComponent getApplicationComponent() {
- return sApplicationComponent;
- }
- public static FragmentComponent getFragmentComponent() {
- return sFragmentComponent;
- }
- public static PojoComponent getPojoComponent() {
- return sPojoComponent;
- }
- @Override
- public void onCreate() {
- initializeInjectionComponents();
- }
- private void initializeInjectionComponents() {
- AndroidModule androidModule = new AndroidModule(this);
- NetworkModule networkModule = new NetworkModule();
- sApplicationComponent = DaggerApplicationComponent.builder()
- .androidModule(androidModule)
- .build();
- sFragmentComponent = DaggerFragmentComponent.builder()
- .androidModule(androidModule)
- .networkModule(networkModule)
- .build();
- sPojoComponent = DaggerPojoComponent.builder()
- .androidModule(androidModule)
- .networkModule(networkModule)
- .osModule(new OsModule())
- .build();
- }
- }
- public class MyFragment extends Fragment {
- @Inject
- OkHttpClient mOkHttpClient;
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- MyApplication.getFragmentComponent().inject(this);
- }
- }
- public class MyPojo {
- @Inject
- OkHttpClient mOkHttpClient;
- @Inject
- Handler mMainHandler;
- public MyPojo() {
- MyApplication.getPojoComponent().inject(this);
- }
- }
- abstract class BaseUtils {
- static Application getApplication() {
- return BaseApplication.getApplicationComponent().getApplication();
- }
- static Context getApplicationContext() {
- return BaseApplication.getApplicationComponent().getApplicationContext();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement