-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Issues
1.Dagger 前缀的类为 Dagger2 使用 Apt 自动生成的,如果缺失的话,先把报错的部分注释掉,然后编译下项目,Dagger 前缀的类就自动生成了,这个时候打开注释就可以了, 更多 Dagger 注入的常见问题, 具体用法请参照 Dagger2 的 官方文档.
2. Github 仓库的最新代码会领先于 Jcenter 远程库,具有下一个版本的新特性,所以会发现在 Github 仓库里最新的 Demo 上使用最新的远程库版本,会出现版本不兼容的情况,这时请进入 这里 查看对应的版本并下载下来删除 arms Module 后,将 Demo 依赖对应版本的远程库即可使用,也可以直接使用 git checkout (对应版本号, 如 v2.2.0) 切换到对应版本的 Release 代码.
3. 在 Android 4.4 或以下版本如果突然出现 java.lang.NoClassDefFoundError 错误, 或者 java.lang.ClassNotFoundException 异常, 以及无缘无故提示 Unable to find ConfigModule 异常, 请根据这个 解决方案 处理.
4. MVPArms 为什么使用 AndroidEventBus 而不是 greenrobot 的 EventBus ,请看这里 我的回答.
5. 第一次启动 app 时,冷启动会白屏很久,这并不是因为本框架导致的,是因为 Instant Run 在 Debug 模式下会在第一次启动时部署一些资源,如果签名打 Release 安装包则不会出现冷启动很慢的情况,所以不用担心影响用户体验.
6. 在启动 app 时报如下错误: Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication
,请将 Instant Run 关闭即可.
7. 当依赖 Espresso 遭遇 Conflict with dependency 'com.google.code.findbugs:jsr305'
错误时,请将以下代码加入到当前 Module 的 build.gradle 中:
dependencies {
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') {
exclude module: 'jsr305'
}
}
8. Butterknife 找不到控件,报空指针异常,请将以下代码加入到当前 Module 的 build.gradle 中:
dependencies {
annotationProcessor 'com.jakewharton:butterknife-compiler:x.y.z'
}
9. 本框架 master 分支使用的是 Rxjava2 ,rx1 分支使用的是 Rxjava1 , rx1 分支已停止维护,建议使用 master 分支,也就是 2.x.x 版本.
10. 对于逻辑简单的页面可以不使用 Presenter,直接在 Activity 或 Fragment 中处理逻辑,不给 Activity 或 Fragment 指定 Presenter 的范型即不使用 Presenter,在 Presenter 中如果不需要处理数据,可以不提供 Model(BasePresenter 有一个只需要 View 的构造方法).
11. Presenter 和 Model 都可以无限制的 复用, 所以 MVP 的划分不需要太细粒度, 稍微粗粒度一点, 即不需要每个 Activity 或 Fragment 都给他划分一套 MVP, 可以几个 Activity 或 Fragment 使用同一个 Presenter(使用同一个类不是同一个对象, 这个 Presenter 含有可以共用的逻辑), 也可一个 Activity 或 Fragment 根据不同的需求持有多个不同类型的 Presenter 对象, Model 层同理, 这样灵活使用, 不仅延续了 MVP 的优点使项目低耦合易维护, 也缓解了 MVP 的缺点使项目减少了很多类和接口,但是怎么划分, 怎么掌握这个粒度, 就需要一定的经验, 这才是 MVP 的精髓.
12. 框架中的 Presenter 怎么注入的? 注入对象的来源?.
13. 框架中 ButterKnife 的绑定.
14. 如何复用 Presenter?.
- 1 开发准备
- 1.1 导入框架
- 1.2 引用 config.gradle
- 1.2.1 使用 config.gradle
- 1.3 配置 build.gradle
- 1.3.1 依赖 Dagger2
- 1.3.2 使用 Lambda
- 1.4 配置 AndroidManifest
- 1.4.1 添加权限
- 1.4.2 指定 Application
- 1.4.3 配置 AndroidAutoSize
- 1.4.4 配置框架自定义属性
- 1.5 混淆
- 1.6 版本更新
- 2 快速开始
- 2.1 ConfigModule
- 2.2 AppComponent
- 2.3 RepositoryManager
- 2.4 MVP 实战
- 2.4.1 Contract
- 2.4.2 View
- 2.4.3 Model
- 2.4.4 Presenter
- 2.4.5 MVP Module
- 2.4.6 MVP Component
- 2.4.7 Dagger Scope
- 2.4.8 MVP 总结
- 3 功能使用
- 3.1 App 全局配置信息(使用 Dagger 注入)
- 3.2 全局捕捉 Http 请求和响应
- 3.3 全局错误处理及发生错误时重新执行
- 3.4 ImageLoader 如何扩展以及切换图片请求框架
- 3.5 AndroidEventBus Tag
- 3.6 AutoLayout 组件
- 3.7 自定义 PopupWindow
- 3.8 快速实现 RecyclerView
- 3.9 权限管理(适配 Android 6.0 权限管理)
- 3.10 Gradle 配置启动 Debug 模式
- 3.11 AppManager(管理所有的 Activity)
- 3.12 AppDelegate(代理 Application 的生命周期)
- 3.13 ActivityDelegate 和 FragmentDelegate
- 3.14 框架中 RxLifecycle 的使用
- 4 Arms 扩展库
- 5 更新日志