Android рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рднрд╡рд┐рд╖реНрдп

рдореИрдВ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рдЬреЗрдореА рд╕реЗрдиреНрд╕рди рдХреЗ рдореВрд▓ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд▓рд╛рддрд╛ рд╣реВрдВ
рдЫрд╡рд┐


Android 9 рдкрд╛рдИ рд╕реЗ рдкрд╣рд▓реЗ рдЧрддрд┐рд╡рд┐рдзрд┐ рдмрдирд╛рдирд╛


рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди (DI) рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдореЙрдбрд▓ рд╣реИ рдЬреЛ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рднреА рд░реВрдкреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреИрдЧрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред DI рдореЗрдВ рдЖрдиреЗ рдкрд░ Android 9 рдкрд╛рдИ рдХреЗ рд╣рд╛рд▓рд┐рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдиреЗ рд╣рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдХреНрд╖рдо рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖рдХрд░ рдирдП AppComponentFactory рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рдеред




рдЖрдзреБрдирд┐рдХ рдПрдВрдбреНрд░реЙрдЗрдб рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП DI рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдХреЛрдб рдХреА рдХреБрд▓ рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо Android рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рдмрд╕реЗ рдЖрдо DI рд▓рд╛рдЗрдмреНрд░реЗрд░реА Dagger 2 рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдмрд╛рдд рдХрд╛ рдмреБрдирд┐рдпрд╛рджреА рдЬреНрдЮрд╛рди рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ рдХреЛ рд╕рдордЭрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдереЛрдбрд╝рд╛ рд╕рд╛рд╣рд╕рд┐рдХ рд╣реИред рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рд╕рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдПрдВрдбреНрд░реЙрдЗрдб 9 рдкрд╛рдИ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕рдВрд╕реНрдХрд░рдг рдкреИрдирд▓ рдкрд░ рднреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рд╖рдп рд╕рдВрднрд╡рддрдГ рдХрдо рд╕реЗ рдХрдо рдХрдИ рд╡рд░реНрд╖реЛрдВ рддрдХ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред


Android рдореЗрдВ рдЖрдЬ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди


рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рддреЛ рд╣рдо рдЕрдкрдиреЗ рдЖрд╢реНрд░рд┐рдд рд╡рд░реНрдЧреЛрдВ рдХреЛ "рдирд┐рд░реНрднрд░рддрд╛" рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП DI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдбреЗрдЯрд╛-рд╕рдВрдмрдВрдзрд┐рдд рд▓реЙрдЬрд┐рдХ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреБрдЫ рдбреЗрдЯрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рд╣рдорд╛рд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдХрдИ рдЬрдЧрд╣реЛрдВ рдкрд░ рдПрдХ рд╣реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдмреАрдЪ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рднрдВрдбрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗред рд╣рдо рдореЙрдбреНрдпреВрд▓ рдореЗрдВ Provides рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рд╕реЗ рдбреИрдЧрд░ рдХреЛ рдкрддрд╛ рдЪрд▓ рд╕рдХреЗрдЧрд╛ рдХрд┐ рдпрд╣ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдорд╛рд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рдЙрджрд╛рд╣рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗред


 @Module class AppModule(val appContext: Context) { @Provides @ApplicationScope fun provideApplicationContext(): Context = appContext @Provides @ApplicationScope fun provideRepository(context: Context): Repository = Repository(context) } 

рдЕрдм рд╣рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП Component рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ Repository рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред


 @ApplicationScope @Component(modules = [AppModule::class]) interface ApplicationComponent { fun inject(activity: MainActivity) } 

рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА Activity рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдордиреЗ рдЕрдкрдиреЗ ApplicationComponent рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╣реАрдВ рдФрд░ рдмрдирд╛рдпрд╛ред


 class MainActivity: AppCompatActivity() { @Inject lateinit var repository: Repository override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) //    application.applicationComponent.inject(this) //       } } 

рд╡рд╣ рд╕рдм рд╣реИ! рд╣рдо рд╕рд┐рд░реНрдл рдбреИрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡реЗрджрди рдХреЗ рднреАрддрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред


рд╡рд░реНрддрдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ?


рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рд╣рдордиреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдВрдЬреЗрдХреНрд╢рди рджреЗрдЦреЗ, рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯред


рдкрд╣рд▓реЗ рдЬреЛ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЙрд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЙрддреНрдкрддреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рд╕рдмрд╕реЗ рд╢реБрджреНрдз рд░реВрдк рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдЗрдВрдЬреЗрдХреНрд╢рди рд╡рд░реНрдЧреЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ Module рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:


 fun provideRepository(context: Context): Repository = Repository(context) 

рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ Context рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ provideApplicationContext() рдлрд╝рдВрдХреНрд╢рдиред


рджреВрд╕рд░рд╛, рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ, рдЬреЛ рд╣рдордиреЗ рджреЗрдЦрд╛ рд╡рд╣ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡рд░реНрдЧ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ ред рд╣рдорд╛рд░реЗ рд╕реНрдЯреЛрд░ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ MainActivity рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣рд╛рдБ рд╣рдо Inject рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЗрддреЛрдВ рдХреЛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░, рд╣рдорд╛рд░реЗ onCreate рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ onCreate рд╣рдо ApplicationComponent рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХрд┐рд╕реА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдЬрд┐рддрдирд╛ рд╕рд╛рдл рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдВрджрд░реНрдн рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣рдорд╛рд░реЗ рдЖрд╢реНрд░рд┐рдд рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЕрд▓рдЧ рд╣реЛ рд░рд╣реА рд╣реИред рдПрдВрдбреНрд░реЙрдЗрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдПрдХ рдФрд░ рджреЛрд╖, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЬреЛ рдкрд╣рд▓реА рдЪреАрдЬ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдЬреАрд╡рди рдЪрдХреНрд░ рдореЗрдВ рдЧрд▓рдд рдмрд┐рдВрджреБ рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЧрд▓рддреА рд╕реЗ рдХрд┐рд╕реА рдРрд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЕрднреА рддрдХ рдЖрд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдЧ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕рдВрднрд╡рддрдГ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВред рд╣рдордиреЗ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рджреЗрдЦрд╛, рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдбреИрдЧрд░ рдПрдХ рдмрд╣реБрдд рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдмрд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╣рдо рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ "рдЧрддрд┐рд╡рд┐рдзрд┐", "рд╕реЗрд╡рд╛", "рдПрдкреНрд▓рд┐рдХреЗрд╢рди", рдЖрджрд┐, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд┐рд▓рд╣рд╛рд▓ рд╣рдо рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЦреЗрддреЛрдВ рдореЗрдВ рдкреЗрд╢ рдХрд░рдиреЗ рдкрд░ рдЕрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдлрд┐рд░ рднреА, рдПрдВрдбреНрд░реЙрдЗрдб 9 рдкрд╛рдИ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рддреИрдпрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ, рд╢рд╛рдпрдж, рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдмрджрд▓ рджреЗрдЧрд╛ред


Android 9 рдкрд╛рдИ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди


рдЬреИрд╕рд╛ рдХрд┐ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдВрдбреНрд░реЙрдЗрдб 9 рдкрд╛рдИ рдореЗрдВ рдПрдХ AppComponentFactory рд╡рд░реНрдЧ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдмрд▓реНрдХрд┐ рджреБрд░реНрд▓рдн рд╣реИ, рдФрд░ рдмрд╕ рдбреЗрд╡рд▓рдкрд░ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЗрд╕ рддрд░рд╣ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


рдкреНрд░рдХрдЯ рддрддреНрд╡реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред

рдпрд╣ рдкреЗрдЪреАрджрд╛ рд╣реИред рдпрд╣рд╛рдВ "рдореИрдирд┐рдлреЗрд╕реНрдЯ рдПрд▓рд┐рдореЗрдВрдЯреНрд╕" рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЕрдкрдиреЗ AndroidManifest рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ - рдЬреИрд╕реЗ рдХрд┐ рдЧрддрд┐рд╡рд┐рдзрд┐, рд╕реЗрд╡рд╛ рдФрд░ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рд╡рд░реНрдЧред рдпрд╣ рд╣рдореЗрдВ рдЗрди рддрддреНрд╡реЛрдВ рдХреЗ "рдирд┐рд░реНрдорд╛рдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ" рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ ... рдЗрд╕рд▓рд┐рдП, рд╣реЗ, рдХреНрдпрд╛ рдЕрдм рд╣рдо рдЕрдкрдиреА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЦреБрд╢реА рд╣реИ!


рдЪрд▓реЛ рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рдХрд░реЗрдВред рд╣рдо AppComponentFactory рд╡рд┐рд╕реНрддрд╛рд░ AppComponentFactory рдФрд░ AppComponentFactory рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред


 class InjectionComponentFactory: AppComponentFactory() { private val repository = NonContextRepository() override fun instantiateActivity(cl: ClassLoader, className: String, intent: Intent?): Activity { return when { className == MainActivity::class.java.name -> MainActivity(repository) else -> super.instantiateActivity(cl, className, intent) } } } 

рдЕрдм рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреИрдЧ рдХреЗ рдЕрдВрджрд░ рдЕрдкрдиреЗ рдШрдЯрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЛ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


 <application android:allowBackup="true" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:name=".InjectionApp" android:appComponentFactory="com.mypackage.injectiontest.component.InjectionComponentFactory" android:theme="@style/AppTheme" tools:replace="android:appComponentFactory"> 

рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ... рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рд╣рдорд╛рд░рд╛ NonContextRepository MainActivity рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рди рд╕реЗ!


рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреБрдЫ рдЖрд░рдХреНрд╖рдг рд╣реИрдВред рд╣рдо рдпрд╣рд╛рдВ Context рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА, рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рд╣реЛрддрд╛ рд╣реИ - рдпрд╣ рднреНрд░рд╛рдордХ рд╣реИ! рд╣рдо рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рд╣рдорд╛рд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рджреЗ, рд▓реЗрдХрд┐рди рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдбреИрдЧрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдорд┐рд▓реЛ - рдбреИрдЧрд░ рдорд▓реНрдЯреА-рдмрд╛рдЗрдВрдбреНрд╕


рдореИрдВ рдбрд╛рдХреВ рдХреЗ рддрд╣рдд рдбреИрдЧрд░ рдорд▓реНрдЯреАрдкрд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдСрдкрд░реЗрд╢рди рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдпрд╣ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдХреЗрд▓реЗрдмрд▓ рддрд░реАрдХреЗ рд╕реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИред


рдЖрдЗрдП рдкрд╣рд▓реЗ рд╣рдорд╛рд░реА рдЧрддрд┐рд╡рд┐рдзрд┐ рд╕реЗрдЯ рдХрд░реЗрдВ рдХрд┐ рдЖрдЧреЗ рдХрд╣рд╛рдВ рдЬрд╛рдирд╛ рд╣реИред


 class MainActivity @Inject constructor( private val repository: NonContextRepository ): Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) //       } } 

рдпрд╣ рддреБрд░рдВрдд рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рд▓рдЧрднрдЧ рдХреЛрдИ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИ ред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рд╡рд╣ рд╣реИ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕реЗ рдкрд╣рд▓реЗ Inject рдПрдиреЛрдЯреЗрд╢рдиред


рдЕрдм рдЖрдкрдХреЛ рдШрдЯрдХ рдФрд░ рдбреИрдЧрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 @Component(modules = [ApplicationModule::class]) interface ApplicationComponent { fun inject(factory: InjectionComponentFactory) } 

 @Module(includes = [ComponentModule::class]) class ApplicationModule { @Provides fun provideRepository(): NonContextRepository = NonContextRepository() } 

рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред рдЕрдм рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдШрдЯрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЕрдкрдиреЗ рдкреНрд░рдХрдЯ рддрддреНрд╡ рдХреИрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ? рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдПрдХ ComponentModule рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ:


 @Module abstract class ComponentModule { @Binds @IntoMap @ComponentKey(MainActivity::class) abstract fun bindMainActivity(activity: MainActivity): Any @Binds abstract fun bindComponentHelper(componentHelper: ComponentHelper): ComponentInstanceHelper } @Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER) @Retention(AnnotationRetention.RUNTIME) @MapKey internal annotation class ComponentKey(val clazz: KClass<out Any>) 

рд╣рд╛рдБ, рдареАрдХ рд╣реИ, рдмрд╕ рдХреБрдЫ рдПрдиреЛрдЯреЗрд╢рдиред рдпрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреА Activity рдХреЛ рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рд╣рдорд╛рд░реЗ ComponentHelper рд╡рд░реНрдЧ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ ComponentHelper рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ - рд╕рднреА рджреЛ Binds рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВред рдбреИрдЧрд░ рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ MainActivity рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА MainActivity рдХреЛ рддреБрд░рдВрдд рдХреИрд╕реЗ MainActivity рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ Inject рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП "рдмрд╛рдЗрдВрдб" рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ ComponentHelper рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред


 class ComponentHelper @Inject constructor( private val creators: Map<Class<out Any>, @JvmSuppressWildcards Provider<Any>> ): ComponentInstanceHelper { @Suppress("UNCHECKED_CAST") override fun <T> resolve(className: String): T? = creators .filter { it.key.name == className } .values .firstOrNull() ?.get() as? T } interface InstanceComponentHelper { fun <T> resolve(className: String): T? } 

рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкреВрд░реНрддрд┐рдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд╛рд╕ рдореИрдк рд╣реИред рдЬрдм рд╣рдо рдирд╛рдо рд╕реЗ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдмрд╕ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рддрд╛ рдкрд╛рддреЗ рд╣реИрдВ (рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реИ), рддреЛ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ, рдФрд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░реЗрдВред


рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдирдП рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ AppComponentFactory рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


 class InjectionComponentFactory: AppComponentFactory() { @Inject lateinit var componentHelper: ComponentInstanceHelper init { DaggerApplicationComponent.create().inject(this) } override fun instantiateActivity(cl: ClassLoader, className: String, intent: Intent?): Activity { return componentHelper .resolve<Activity>(className) ?.apply { setIntent(intent) } ?: super.instantiateActivity(cl, className, intent) } } 

рдХреЛрдб рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБред рдпрд╣ рд╕рдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдХреНрдпрд╛ рдЦреБрд╢реА рд╣реИ?


рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореБрджреНрджреЗ


рдРрд╕рд╛ рд╢реАрд░реНрд╖рдХ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдирд╣реАрдВ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдХреЗ рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдорд╛рдирдХ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рдорд╛рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди Android рдореЗрдВ Context рд╕рднреА рд╣реИред рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рдиреЗрдЯрд╡рд░реНрдХ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╣рдорд╛рд░реА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЕрдХреНрд╕рд░ рдРрд╕реА рдЪреАрдЬреЗрдВ рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред рд╣рдо рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╢реБрджреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрдХрд░ рдпрд╛ рдЕрдкрдиреЗ Application рд╡рд░реНрдЧ рдореЗрдВ рд╕рдВрджрд░реНрдн рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдЖрд░рдВрдн рдХрд░рдХреЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд╛рдо рд▓рдЧрддрд╛ рд╣реИред


рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдПрдХ рдФрд░ рдиреБрдХрд╕рд╛рди рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИред рдбреИрдЧрд░ рдореЗрдВ, рд╡рд░реНрдЧ рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рдПрдХ рдЕрдЪреНрдЫреЗ рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд╕рд╛рде рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдореБрдЦ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд╕реНрддреБ рдЧреНрд░рд╛рдл рдХреА рдорд╛рдк рдФрд░ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред AppComponentFactory рд╣рдорд╛рд░реЗ рдорд╛рдирдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╕реНрддрд░ рдкрд░ рдореМрдЬреВрдж рд╣реИ - рд╣рдо рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд▓рд┐рдВрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рджрд╛рдпрд░реЗ рдореЗрдВ Activity рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред


рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд╕реНрдХреЛрдк рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрдХреЛрдк рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ FragmentFactory рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдореИрдВ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рди рдХреЗрд╡рд▓ рд╣рдореЗрдВ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рджреЗрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рднреА рд╣реИред


рдирд┐рд╖реНрдХрд░реНрд╖


рдПрдВрдбреНрд░реЙрдЗрдб 9 рдкрд╛рдИ рдиреЗ рд╣рдорд╛рд░реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреЗрд╢ рдХрд┐рдпрд╛, рдЬреИрд╕реЗ рдХрд┐ "рдЧрддрд┐рд╡рд┐рдзрд┐" рдФрд░ "рдПрдкреНрд▓рд┐рдХреЗрд╢рди"ред рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдбреИрдЧрд░ рдорд▓реНрдЯреА-рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрд╡реЗрджрди рд╕реНрддрд░ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдмреЗрд╣рдж рдЖрдХрд░реНрд╖рдХ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рд╕рдВрджрд░реНрдн рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЖрд╢рд╛рдЬрдирдХ рднрд╡рд┐рд╖реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ 28 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк 0.5% рд╕реЗ рдХрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдЖрдкрдХреЛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд┐рдзрд┐ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдмрдиреА рд╣реБрдИ рд╣реИред

Source: https://habr.com/ru/post/hi444530/


All Articles