2017-10-07 25 views
0

나는 Dagger2 for android 프로젝트를 사용합니다. 2 개의 범위가 있습니다 : ActivityScope 및 FragmentScope 몇 가지 샘플 코드를 읽고 ActivityScope를 정의하고 사용하여 Activity Lifecycle으로 개체가 파괴 될 것이라고 말합니다. 또한 Activity와 Fragment의 라이프 사이클이 다르므로 2 가지 범위가 있어야합니다.Dagger2 범위 사용

내 질문 : ActivityScope를 사용할 때 개체를 활동 주기로 파괴해야한다는 것을 코드에 알리려면 뭔가해야합니까? 또는 코드가 자동으로 내가 단검을 만들 때이

((DeezFoodzApplication) getApplication()).getAppComponent().inject(this); 
+0

유일하게 알고있는 점은 해당 구성 요소에 이미 만들어진 경우 다시 만들어서는 안된다는 것입니다. – EpicPandaForce

답변

0

같은 활동에 주입하는 것을 알고 내가 ActivityScope를 사용할 때, 개체가 활동의 라이프 사이클과 파괴한다 알고있는 코드를 수 있도록 뭔가를해야합니까 ?

번호 (일부 정적 변수에 저장하지 않은 경우)이 담당하게 될 것 가비지 컬렉터.

단검은 개체를 작성하거나 삽입하는 방법 외에는 알지 못합니다. 생명주기, 개체를 삽입/생성하는 위치 또는 위치, 구성 요소를 저장하는 방법 등에 대해서는 신경 쓰지 않습니다. 어떤 마법도 진행되지 않으며, 다른 서비스는 작동하지 않습니다. 구성 요소는 활동의 해당 필드를 오브젝트로 채우는 방법을 알고있는 자바 클래스입니다. 그게 다야.

  • 구성 요소를 저장하지 않으면 사용 후 garbae가 수집됩니다.
  • 활동/단편의 필드에 구성 요소를 저장하면 onDestroy 다음에 활동/단편과 함께 가비지 수집됩니다.
  • 구성 요소를 일부 정적 변수에 저장하거나 긴 수명의 일부로 전달하면 null 또는 까지 개체가 가비지 수집 될 때까지 거기에 머물러 있습니다. (또한 Activity/Fragment가 누출 될 수도 있습니다.) 정적 변수에 구성 요소를 저장하지 마십시오.

다른 개체와 마찬가지로 정상적인 개체이므로 지나치게 생각하지 마십시오. 생성 된 소스 코드를 항상 확인하거나 디버깅 할 수 있습니다.