Development Tip

Android 메모리 가이드의 '종속성 주입 프레임 워크 방지'가 Dagger에도 적용 되나요?

yourdevel 2020. 12. 5. 10:45
반응형

Android 메모리 가이드의 '종속성 주입 프레임 워크 방지'가 Dagger에도 적용 되나요?


그래서 저는 메모리 성능에 관한 Android 기사에서이 모범 사례를 보았습니다.

http://developer.android.com/training/articles/memory.html

그들은 말했다

의존성 주입 프레임 워크 피하기

Guice 또는 RoboGuice와 같은 종속성 주입 프레임 워크를 사용하면 작성하는 코드를 단순화하고 테스트 및 기타 구성 변경에 유용한 적응 형 환경을 제공 할 수 있으므로 매력적일 수 있습니다. 그러나 이러한 프레임 워크는 코드에서 주석을 스캔하여 많은 프로세스 초기화를 수행하는 경향이 있으므로 필요하지 않더라도 상당한 양의 코드를 RAM에 매핑해야 할 수 있습니다. 이러한 매핑 된 페이지는 Android에서 삭제할 수 있도록 깨끗한 ​​메모리에 할당되지만 페이지가 오랫동안 메모리에 남아있을 때까지 발생하지 않습니다.

그러나 그들이 빠르다고 주장하는 Dagger는 어떻 습니까 . 어느 것을 가야할지 잘 모르시겠습니까?


이 권장 사항은 모든 종속성 주입 프레임 워크에 동일하게 적용 되지 않습니다 .

..frameworks [Guice와 같이 작동]는 코드에서 주석스캔하여 많은 프로세스 초기화를 수행하는 경향 이 있으며, 필요 하지 않더라도 상당한 양의 코드를 RAM에 매핑 해야 할 수 있습니다.

따라서 상기 [런타임] 주석을 스캔 하지 않는 DI / IoC 프레임 워크를 사용하는 경우 , 반사의 [과도한] 사용을 암시하면이 이유가 적용되지 않습니다. Dagger 는 주석을 사용 하지만 Guice 1다르게 사용되며 명시된 문제를 방지합니다.

Dagger가 " 안드로이드 와 자바를 위한 빠른 의존성 주입기 "로 쓰여졌 기 때문에 , 저자들은 이것을 이러한 목적으로 설계했고 그것이 그러한 목표에 적합하다고 믿습니다. 계속해서 시도해보십시오.


1 Dagger는 런타임 주석과 리플렉션에 의존하는 대신 컴파일 시간 주석 ( 대부분 )을 사용합니다. 메모리 가이드가 경고 한 문제를 일으키는 것은 런타임 주석 스캔 및 반사입니다.


Android 팀은 최근 개발자에게 Dagger 2 사용제안 하기 위해 권장 사항을 업데이트했습니다 .

이전 권장 사항은 높은 반영 비용을 기반으로했습니다. Dagger 2는 더 이상 리플렉션 (Dagger 1)을 사용하지 않기 때문에 "불필요한 런타임 비용이나 메모리 사용없이 Android 앱에서 사용할 수 있습니다" 라고 믿습니다 .

(면책 조항 : 저는 Dagger 2 팀 관리자입니다.)


Dagger의 창시자 인 @JakeWharton은 Butterknife 라는 간단한 뷰 "주입"프레임 워크도 작성했습니다.

모든 RoboGuice 전환자가 Dagger를 사용하여 "뷰 삽입"이 부족하다고 불평했기 때문입니다 .

다음과 같이 사용합니다.

class ExampleActivity extends Activity {
  @InjectView(R.id.title) TextView title;
  @InjectView(R.id.subtitle) TextView subtitle;
  @InjectView(R.id.footer) TextView footer;

  @Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.simple_activity);
    ButterKnife.inject(this);
    // TODO Use "injected" views...
  }
}

참고 URL : https://stackoverflow.com/questions/24194283/does-avoid-dependency-injection-frameworks-in-the-android-memory-guide-apply-t

반응형