2014-11-27 6 views
0

저는 Roboguice를 잠시 사용하고 있습니다.하지만 github에서 소스 코드를 볼 때 불필요한 것들이 많이 있기 때문에 일반적으로 사용하지 않거나 필요하기 때문에 Guice와 만 작업하기로 결정했습니다. 이것에 대한 유일한 단점은 내가 안드로이드 컨텍스트를 주입 자신에 의해 구성 할 필요가 있다는 것입니다, 그래서 나는이 일을 끝낼 :Guice in Android without Roboguice, 좋은 선택입니까?

public class AndroidDemoModule extends AbstractModule { 

    @Override 
    protected void configure() { 

     bind(Context.class).toProvider(new Provider<Context>() { 
      @Override 
      public Context get() { 
       return AndroidDemoApplication.getAppContext(); 
      } 
     }); 
//  .in(Singleton.class); 
    } 
} 

인가 : AbstractModule를 확장 내 수업에서 다음

public class AndroidDemoApplication extends Application { 

    private static AndroidDemoApplication instance; 
    private static final Injector INJECTOR = Guice.createInjector(new AndroidDemoModule()); 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     instance = this; 
    } 

    public static Context getAppContext() { 
     return instance; 
    } 

    public static void injectMembers(final Object object) { 
     INJECTOR.injectMembers(object); 
    } 

} 

과 그것은 좋은 접근법인가? 지금은 단지 컨텍스트를 사용하여 sharedPreference 인스턴스를 만들고 컨텍스트를 필요로하는 세션 관리자를 사용하는 것으로 만 사용하면됩니다.

마침내 Roboguice를 Guice로 대체하는 것이 좋은 방법일까요? 안드로이드와 관련이없는 Context뿐입니다. Roboguice보다 가볍고 덜 의존적 인 것을 사용하십시오. 모든 단검이 비슷한 것을 한 후에, 맞습니까? 위해 사용하지 않는 클래스를 제거하기 위해 사용 ProGuard에서 :

답변

0

은 내가 일반적 아니다 그것을 사용하거나 그것이

이 이해가되지 않습니다 필요가 불필요한 물건을 많이 가지고 (Gradle 0.14로 리소스를 축소합니다).

RoboGuice의 개발 배경에는 Guice가 데스크톱을 염두에두고 작성되었습니다. 그것은 상당히 많이 반사를 사용합니다. 데스크톱에서는 문제가 아니지만 모바일 리플렉션에서는 상당히 나쁜 성능을 보입니다.

RoboGuice를 사용하거나 Dagger 2를 고려해야합니다. 이제 릴리스와 거의 비슷하며 Guice의 사람들이 현대적이고 빠른 것으로 작성했습니다 (전혀 반영하지 않고 마법을 컴파일 할 때 발생합니다).) 안드로이드에 대한 의존성 주입 lib.

+0

감사합니다. Dagger 2를 살펴 보겠습니다. –

+0

@NicolasJafelle은 분명합니다. 단검 2의 프레젠테이션은 다음과 같습니다. https://www.youtube.com/watch?v=oK_XtfXPkqw. 그리고 repo는 https://github.com/google/dagger에 있으며 정사각형/단검에는 없습니다. – Teovald

+0

단검은 Guice와 같은가요? 내 말은 .. 그것은 안드로이드 프레임 워크와 전혀 관련이 없으며 컨텍스트와 그 모든 것을 구성해야한다는 것입니다. 그렇습니까? Android Apps 용 Roboguice를 권장한다면 왜 Dagger 2를 사용하시는 것이 좋습니다. 호기심을위한 것입니다. 감사! –