# jectpack 框架学习 **Repository Path**: iamlfc/objectpack-framework-learning ## Basic Information - **Project Name**: jectpack 框架学习 - **Description**: 新框架 快速学习入门 记录demo - **Primary Language**: Android - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-30 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # jectpack 框架学习 #### 介绍 新框架 快速学习入门 记录demo 1 Arouter todo 1 拦截器失败 2 安装后 有多个module 2 dagger-hilt 2.1 只有Application这个入口点是使用@HiltAndroidApp注解来声明的,这个我们刚才已经看过了。其他的所有入口点, 都是用@AndroidEntryPoint注解来声明的 2.2 @InstallIn(ActivityComponent::class),就是把这个模块安装到Activity组件当中。 2.3 声明了一个@Inject注解,表示我希望通过Hilt来注入truck这个字段 2.4 我们需要在EngineModule的上方声明一个@Module注解,表示这一个用于提供依赖注入实例的模块。 2.5 在抽象函数上方加上@Bind注解,这样Hilt才能识别它 2.6 Qualifier注解的作用就是专门用于解决我们目前碰到的问题,给相同类型的类或接口注入不同的实例。 2.7 至于另外一个@Retention,是用于声明注解的作用范围,选择AnnotationRetention.BINARY表示该注解在编译之后会得到保留, 但是无法通过反射去访问这个注解。这应该是最合理的一个注解作用范围。 2.8 @InstallIn(ActivityComponent::class),就是把这个模块安装到Activity组件当中。 ApplicationComponent::class app Singleton ActivityComponent::class ac ActivityRetainedComponent viewmodel ActivityRetainedScoped(类似于作用域内单例) FragmentComponent ViewComponent ViewWithFragmentComponent ?? 不知道 ServiceComponent 2.9 @Providers,常用于被 @Module 注解标记类的内部方法,并提供依赖项对象。 注入方式可以选择 a 构造函数 data class User constructor(var id:Int ,var name:String){ @Inject constructor():this(1,"")//需要User的时候 自动调用构造函数并注入 } b 指定子类或实现类 @Binds fun bindPeople( beautyGirl:Girl):People // 需要People的时候 自动创建 people子类 并注入 c 直接给出代码 (@Provides) 3 ViewModel 4 LiveData 4.1 onActive() 当LiveData绑定有活跃状态的observer时就会调用,在这里回去注册广播获得电池电量变化。 4.2 onInactive() 当LiveData没有任何活跃状态observer绑定时调用,取消注册广播。