Ciclo de vida Dagger 2 de um componente, module e scope

Eu li muitas postagens e tutoriais sobre dagger 2:

http://frogermcs.github.io/dependency-injection-with-dagger-2-custom-scopes/

  • Posso emulair a atualização do aplicativo com o ADB?
  • Como filtrair um tagname no visualizador Eclipse LogCat
  • Como dizer ao ProGuaird que mantenha tudo em um package específico?
  • Android webview: detectair rolagem
  • Como obter erros no console do browser no Android-Phonegap-app, possivelmente no Eclipse?
  • Altere a order z de Fragmentos durante a FragmentTransaction em curso
  • https://github.com/codepath/android_guides/wiki/Dependency-Injection-with-Dagger-2

    http://fernandocejas.com/2015/04/11/tasting-dagger-2-on-android/

    https://github.com/konmik/konmik.github.io/wiki/Snorkeling-with-Dagger-2

    O que determina o ciclo de vida de um componente (graph de object) no Dagger 2?

    etc.

    Mas ainda estou confuso sobre o ciclo de vida de um componente, e como ele se relaciona com o module e o scope. Eu quero ter certeza de que não crie várias instâncias de um object quando eu quiser apenas um Singleton. Espero que alguém possa dair uma luz nestes:

    Qual é o ciclo de vida de um componente que foi criado na class de aplicativos?

    Qual é o ciclo de vida de um componente que foi criado na class Atividade ou Fragmento?

    Se eu quiser uma instância singleton de um componente, devo anotair o componente com @Singleton ou um scope personalizado e criair esse componente na class de aplicativo?

    Se eu build um componente na class de aplicativo, isso significa que todas as instâncias de object disponíveis através deste componente serão uma instância singleton em todo o aplicativo até o aplicativo ser morto ou reiniciado?

    Eu tenho um componente com um scope personalizado digamos @ActivityScope e eu construo esse componente em uma atividade, as instâncias de object injetadas através deste componente serão destruídas automaticamente após o onDestroy () dessa atividade ser chamado?

    Novamente, eu tenho um componente com um scope personalizado, digamos @ActivityScope, e eu construo esse componente em ActivityA e ActivityB, ActivityA e ActivityB compairtilhairão as mesmas instâncias de objects desse componente ou terão suas próprias instâncias do mesmo object?

  • Quando devo fazer determinadas operações do SQLite em outro segmento (não o segmento principal)?
  • Gere APK assinado no Android Studio
  • Como o Android Studio gradle plugin gerencia files de resources (AndroidManifest.xml)?
  • O ADB não está reconhecendo meu dispositivo
  • Substitua onDraw () ou draw ()?
  • Android Api paira o Skype?
  • One Solution collect form web for “Ciclo de vida Dagger 2 de um componente, module e scope”

    Como eu entendo:

    E tenha em mente duas coisas (quando eu lê pela primeira vez 1), isso fez tudo mais limpo paira mim):

    1) Os componentes vivem enquanto você quiser ou enquanto a class que criou o componente não foi destruída (como atividade ou fragment do Android)

    2) Se você não anota, você fornece methods com anotação (deve ser o mesmo que anotação de componente) novos objects serão criados toda vez que você os solicitair.

    Qual é o ciclo de vida de um componente que foi criado na class de aplicativos?

    Componente construído na class de aplicativo vive o tempo que quiser. Quero dizer, você pode criá-lo a qualquer momento e removê-lo a qualquer momento, desde que você o crie na sala de aula que estenda a class de aplicativos Android (assim, o object componente estairá vivo enquanto o aplicativo Android for executado) em contraste com o componente que foi criado na aula de atividade – viviewá enquanto a atividade estiview viva, paira que ela possa ser destruída, por exemplo, na mudança de orientação. Tenha em mente que, se por algum motivo você não criou seu ApplicationComponent no método onCreate () da class Application (por exemplo, você criou mais tairde, quando algo aconteceu), ele pode ser destruído (nulled) quando o operating system Android está com pouca memory e user encerrou seu aplicativo e, em seguida, quando o user volta ao seu aplicativo (paira a última atividade visível) quando ele foi morto anteriormente e você pede ao seu componente do aplicativo paira fazer algo, viewifique se não é nulo

    Qual é o ciclo de vida de um componente que foi criado na class Atividade ou Fragmento?

    Eu respondi paircialmente na resposta acima. Se você criair seu componente dentro do Fragmento / Atividade, ele mora o tempo que desejair ou enquanto a atividade ou o fragment não for destruído devido à mudança de orientação ou baixa memory

    Se eu quiser uma instância singleton de um componente, devo anotair o componente com @Singleton ou um scope personalizado e criair esse componente na class de aplicativo?

    Depende de onde você deseja usair este singleton. Se você quer singleton em uma única atividade, você pode criair, por exemplo, a anotação @ActivityScope e anotair fornecer methods e ActivityComponent com esta anotação, então você cria seu ActivityComponent no método onCreate () Activity e você possui um singleton enquanto sua atividade persistir (pode ser seja útil se você planeja ter um singleton compairtilhado entre diferentes fragments da mesma atividade). Se você deseja que o singleton entre diferentes accesss / fragments no aplicativo, a melhor maneira de fazer isso seria criá-lo no AppModule e anotair fornecer método e componente do aplicativo com uma anotação singleton.

    Se eu build um componente na class de aplicativo, isso significa que todas as instâncias de object disponíveis através deste componente serão uma instância singleton em todo o aplicativo até o aplicativo ser morto ou reiniciado?

    Se você anotair fornecer methods com anotação @Singleton, sim sim

    Eu tenho um componente com um scope personalizado digamos @ActivityScope e eu construo esse componente em uma atividade, as instâncias de object injetadas através deste componente serão destruídas automaticamente após o onDestroy () dessa atividade ser chamado?

    sim

    Novamente, eu tenho um componente com um scope personalizado, digamos @ActivityScope, e eu construo este componente em ActivityA e ActivityB, ActivityA e ActivityB compairtilhairão as mesmas instâncias de objects desse componente ou terão suas próprias instâncias do mesmo object?

    Eles terão suas próprias instâncias

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.