-
Notifications
You must be signed in to change notification settings - Fork 2.4k
UpdateLog
每次升级之前, 请一定记得先同步更新 config.gradle !!!
「Version: 2.5.2」Sunday, 14 July 2019: Show Diff
v2.5.2 相对于 v2.5.1,只是将 Okhttp4 降低到 Okhttp3,详细原因请看这篇 文章
implementation 'me.jessyan:arms:2.5.2'
implementation 'me.jessyan:arms-imageloader-glide:2.5.2'
implementation 'me.jessyan:arms-autolayout:2.5.2'
- 降低 Okhttp 到 v3.12.3
「Version: 2.5.1」Thursday, 11 July 2019: Show Diff
关于 v2.5.1 更新的部分说明可以看 这里
implementation 'me.jessyan:arms:2.5.1'
implementation 'me.jessyan:arms-imageloader-glide:2.5.1'
implementation 'me.jessyan:arms-autolayout:2.5.1'
- 提升 com.android.tools.build:gradle 到 v3.4.2
- 提升 Dagger 到 v2.23.2
- 提升 ButterKnife 到 v9.0.0
- 提升 Okhttp 到 v4.0.0
- 提升 Retrofit 到 v2.6.0
- 提升 RxJava 到 v2.2.10
- 提升 RxAndroid 到 v2.1.1
- 提升 LeakCanary 到 v1.6.3
- 提升 Glide 到 v4.9.0
- 提升 AndroidAutoSize 到 v1.1.2
- 提升 Multidex 到 v1.0.3
- 重构 Demo 中依赖注入的部分代码,使用 @BindsInstance 和 @Binds 注解替代之前的方式
- 优化框架和 Demo 中的注释
- 增强代码可读性
- 新增 BaseLazyLoadFragment 类,实现 Fragment 的懒加载
- 新增 EventBus 的混淆配置
- 新增 CacheStrategy 类,提升 GlideImageLoaderStrategy 配置缓存策略时的健壮性
「Version: 2.5.0」Wednesday, 7 November 2018: Show Diff
v2.5.0 将一些 Arms 核心库的代码抽取到了扩展库中,以便于框架使用者可以更灵活的选择不同的三方库,并且还可以减轻 Arms 的体积,后续还会继续分拆更多的扩展库出来,让 Arms 的扩展性更强,体积更轻,想让旧项目从 v2.4.1 升级到 v2.5.0 根据 这里 修改即可!!!
注意!!! 由于 v2.5.0 在 IView 中使用到了接口的默认方法,所以在升级 v2.5.0 之前必须保证项目使用了 Java 8 及以上
- 提升 Gradle 到 v4.6
- 提升 Glide 到 v4.8.0
- 提升 Gson 到 v2.8.5
- 提升 Dagger 到 v2.19
- 提升 Timber 到 v4.7.1
- 提升 Okhttp 到 v3.11.0
- 提升 Rxpermissions 到 v0.10.2
- 提升 RxLifecycle 到 v2.2.2
- 提升 RxJava 到 v2.2.3
- 提升 RxAndroid 到 v2.1.0
- 提升 RetrofitUrlManager 到 v1.4.0
- 提升 com.android.tools.build:gradle 到 v3.2.1
- 提升 android-maven-gradle-plugin 到 v2.1
- 移除 Arms 中的 com.android.support:design 库,目的是减小 Arms 体积, design 库中含有太多 View
- 移除 Arms 中的 AndroidEventBus
- 增加 IntelligentCache,IntelligentCache 含有 LRU 算法的存储容器和可永久将数据存储在内存中的存储容器,对 IntelligentCache 的增删改查都可以根据需求在两个存储容器中选择一个进行操作
- 增加 Arms 中关于 Application 相关类的结构图,在 Wiki 中查看
- 增加 Arms 的新 Logo
- 新增 Platform 类,可管理 Arms 中可扩展的三方库的依赖情况
- 新增 EventBusManager 类,使用者可自由在 AndroidEventBus 和 EventBus 中选择
- 新增 AppComponent#executorService,提供一个全局公用的线程池给使用者
- 新增 mContext 字段到 BaseFragment 中
- 优化 Retrofit 获取 Service 的方式,根据知乎提供的方式,可以加快第一次获取 Service 的速度
- 优化 IView,将部分接口方法改为默认方法,以后实现类不再需要实现 IView 的所有方法
- 优化 PermissionUtil,当请求权限失败,可反馈所有请求失败的权限名称
- 优化 Demo,将 Demo 中的屏幕适配框架从 AndroidAutoLayout 替换为 AndroidAutoSize
- 修复 RepositoryManager#clearAllCache() 无效的问题
- 修复 BaseActivity 中,当 xml 解析错误不会抛真实错误的问题
- 修复 Arms 会在网络请求体中有 '%' 字符时奔溃的问题
- 修复当项目中使用 Logger 时,Arms 网络日志打印会出现错乱的问题
- 修复 AdapterViewPager 引起奔溃的问题,#219
- 重构 Arms 中 AndroidAutoLayout 的部分代码,并将代码抽取到扩展库 arms-autolayout 中
- 重构 Arms 中 Glide 的部分代码,并将代码抽取到扩展库 arms-imageloader-glide 中
- 重构 AppManager,可使用静态方法 AppManager#getAppManager 直接获取 AppManager 实例,之前通过 AppComponent#appManager() 获取的方式废弃
- 重命名 app -> demo
「Version: 2.4.1」Monday, 9 April 2018: Show Diff
v2.4.1 修复了 v2.4.0 的某些问题, 已经升级了 v2.4.0 的兄弟请尽快升级到 v2.4.1
- 修复在 DefaultFormatPrinter 中角标越界的问题
「Version: 2.4.0」Sunday, 8 April 2018: Show Diff
之前引入 v2.3.5 及以下的旧版本项目, 只须做一处修改即可兼容 v2.4.0, 请注意 向下兼容警告
- 增加 FormatPrinter, 提供更规范的网络请求以及网络响应日志打印格式, 并且可以在 GlobalConfiguration 中根据自己的需求自定义想要的输出格式, 详见 Demo
- 增加 BlurTransformation, 使 GlideImageLoaderStrategy 默认支持高斯模糊
- 移动 RequestInterceptor 到 http.log 包下, 引用了这个类的地方都需要重新导入正确的包名, 在 Demo 中 GlobalHttpHandlerImpl 和 GlobalConfiguration 这两个类有引用 RequestInterceptor ( 向下兼容警告: 这里需要旧版本项目做出重新导包的调整 )
- 优化 框架和 Demo 中的 Dagger 应用方式, 模板 也做了相应优化
- 优化 Demo 图标
- 优化 ImageConfigImpl, 新增几个字段 (isCircle, imageRadius, blurValue ...), 以添加几个 GlideImageLoaderStrategy 默认支持的 BitmapTransformation, 以后 ImageConfigImpl 将不能存放 BitmapTransformation 类型(之前的 transformation 字段将作废掉, 将在之后的版本被 删除 ), ImageConfigImpl 以及它的子类只能存放基础类型和 Android 包里的类, 尽量避免存放某个图片请求框架的特有类, 这样可以隔离耦合, 降低 ImageLoader 切换为其他图片请求框架的风险
- 调整 minSdkVersion 到 14 (之前是 15)
- 修复 AnroidStudio v3.1.0 及以上版本日志输出格式混乱的问题, (据 JessYan 猜测, 可能是因为 AndroidStudio v3.1.0 及以上版本将极短时间内以相同 tag 输出多次的 log 自动合并为一次输出, 导致本来对称的输出日志, 出现不对称的问题)
- 兼容 AnroidStudio v3.1.0 (模板 也已兼容)
- 提升 RxErrorHandler 到 v2.1.1
- 提升 RetrofitUrlManager 到 v1.2.5
- 提升 GradlePlugins 到 3.1.0
- 提升 SupportLibrary 到 v27.1.0
- 提升 Retrofit 到 v2.4.0
- 提升 Dagger 到 v2.15
- 提升 Glide 到 v4.6.1
- 提升 Okhttp 到 v3.10.0
- 提升 RxAndroid 到 v2.0.2
- 提升 Rxjava 到 v2.1.12
- 提升 Upgrade Timber 到 v4.7.0
「Version: 2.3.5」Monday, 15 January 2018: Show Diff
之前引入 v2.3.1 及以下的旧版本项目, 无需做任何修改即可直接升级, 如果之前自己自定义过 BaseActivity 或 BaseFragment, 升级到 v2.3.5 之后还需要依照框架中的 BaseActivity 和 BaseFragment, 实现 provideCache() 方法即可
- 修复 ImageLoader 扩展后发生 ClassCastException 异常 #175
- 修复 BadParcelableException 异常(#160, #180)
- 增加 IActivity#provideCache() 和 IFragment#provideCache() 方法, 提供在 Activity 和 Fragment 的生命周期内存取一些必要的数据, 更高级的方式可使用 LifecycleModel
- 优化框架中和 Demo 中的注释
- 优化 RepositoryManager 高并发问题
- 优化 AppManager 高并发问题
- 优化 DeviceUtils, 避免在 Android6.0 版本上获取 ConnectivityManager 时发生内存泄露
- 优化 GlobalHttpHandlerImpl, 使用 Gson 替代 JSONObject 解析 Json
- 提升 Android Gradle Plugin 到 v3.0.1
- 提升 Android SDK 到 27
- 提升 BuildTools 到 v27.0.3
- 提升 Android Support Library 到 v27.0.2
- 提升 Dagger 到 v2.14.1
- 提升 Glide 到 v4.5.0
- 提升 Rxlifecycle 到 v2.2.1
- 提升 Okhttp 到 v3.9.1
- 提升 RxJava 到 v2.1.8
- 提升 RxCache 到 v1.8.3
- 提升 RxPermissions 到 v0.9.5
- 提升 Timber 到 v4.6.0
「Version: 2.3.1」Friday, 3 November 2017: Show Diff
之前引入旧版本的项目需要调整后才能兼容 v2.3.1, 请注意 向下兼容警告
- 兼容 Android Studio v3.0 以及 Android Gradle Plugin v3.0
- 支持 Android Gradle Plugin v3.0 的一些特性
- 支持 Lifecycles of Architecture Components, 在 Presenter 和 Model 中可直接使用 Architecture Components 提供的生命周期组件, 可与 Activity 和 Fragment 的生命周期做绑定
- 增加 Cache 和 LruCache, 以存储一些框架必需的数据
- 增加 shouldShowRequestPermissionRationale 方法到 RequestPermission 接口中, 当请求权限时用户选择不再询问则会回调此方法( 向下兼容警告: 这里需要旧版本项目作出调整 )
- 优化 RxCacheConfiguration 配置 RxCache 的方式( 向下兼容警告: 这里需要旧版本项目作出调整 )
- 提升 RxErrorHandler 到 v2.1.0(支持背压)
- 提升 RxLifecycle 到 v2.2.0
- 提升 RxJava2 到 v2.1.6
- 提升 Gson 到 v2.8.2
- 提升 Leakcanary 到 v1.5.4
- 提升 Android Support Library 到 v26.1.0
- 提升 Okhttp 到 v3.9.0
- 提升 retrofit-url-manager 到 v1.1.0
- 提升 Progressmanager 到 v1.5.0
- 提升 Glide 到 v4.2.0
- 提升 Dagger 到 v2.12
- 修复 BadParcelableException 的问题
- 修复 AppManager#appExit() 在进程未被杀死时释放资源的问题
「Version: 2.2.3」Tuesday, 12 September 2017: Show Diff
- 提升 Android Support Library 到 v26.0.2
- 重构 AppManager ,增加 AppManager#getTopActivity(), AppManager#killAll(Class[]), AppManager#killAll(String...) 等方法,使 AppManager 更加强大,详细用法,请查看源码注释
- 增加 AppManager.HandleListener 接口,可扩展和遥控 AppManager 的更多功能,使用方法请参考 Wiki 以及 Demo
- 重构 框架使用 RxLifecycle 的部分,使用 CallBacks 加 接口 的方式替代之前继承 RxLifecycle 的 Activity/Fragment 的方式(这里可以学习下 CallBacks 的用法),以后自定义 BaseActivity ,不再需要继承于 RxLifecycle 的 Activity/Fragment ,只需要实现 Lifecycleable 接口即可拥有 RxLifecycle 的特性,突破 Java 单继承的限制,当遇到需要继承多个三方库的 Activity/Fragment 时,不再尴尬(也许你没看懂这里是什么意思,没事,当遇到了相应的问题你就知道为什么这样设计了)
- 增加 ActivityLifecycleable/FragmentLifecycleable 接口,Activity/Fragment 只需要实现此接口,即可拥有 RxLifecycle 的特性,不在像之前需要根据不同类型的 Activity/Fragment 继承不同类型的 RxLifecycle 提供的 Activity/Fragment
- 增加 RxLifecycleUtils 工具类,替代 RxUtils#bindToLifecycle(IView) ,使用此类即可使用 RxLifecycle 的特性,详细用法请查看 Demo
- 移除 com.trello.rxlifecycle2:rxlifecycle-components:x.y.z ,此 Module 下的所有内容,使用一个 Lifecycleable 接口即可代替
- 优化 GlobalConfiguration ,使结构更加清晰
- 优化代码风格
- 添加开源许可
「Version: 2.2.0」Thursday, 24 August 2017: Show Diff
请注意!由于本次更新,更正了某些类名或者包名,导致引用的地方都会报错,这时请你就别傻乎乎的一个个去改了,使用 Android Studio 自带的全局替换功能,Mac 快捷键为 Cmd + Shift + R , Windows 为 Ctrl + Shift + R ,如果改了键或者使用其他系统,请自行在 Setting -> Kepmap 中搜索 Replace in path
- RetrofitUrlManager 以最简洁的 Api 让 Retrofit 同时支持多个 BaseUrl 以及动态改变 BaseUrl
- 提升 Android SDK 以及 buildTools 到最新的 26 (Oreo)
- 提升 Android Support Library 到 v26.0.1
- 提升 框架所使用的部分三方库的版本(Rxjava2 v2.1.1 -> 2.1.3)
- 提升 Glide 到 v4.0.0 ,注意 v4.0.0 后不需要在 AndroidManifest 中声明 GlideModule 的 meta-data
- 提升 ButterKnife 到 v8.8.1,注意 v8.8.0 后需调用 ButterKnife.setDebug(true) (建议在 AppLifecycles#onCreate(Application) 中调用),ButterKnife 才会打印提示日志
- 更名 UiUtils 为 ArmsUtils
- 更名 CharactorHandler 为 CharacterHandler
- 更名 GlideImageConfig 为 ImageConfigImpl ,建议在项目中自行实现 BaseImageLoaderStrategy 和 ImageConfig 替换现有策略,因为默认提供的 GlideImageLoaderStrategy 只是为了快速使用 Glide ,实现比较简单,如果遇到复杂场景将无能为力,我为什么设计 ImageLoader ? 感觉比直接调用 Glide 复杂多了? 如果你直接使用 Glide 请求图片,当等你从 Glide v3.0 升到 v4.0 (或者更换图片请求框架)时,看着满项目报的红,你就知道为什么我要多封装一层,而不是直接调用
- 增加 GlideAppliesOptions 接口,帮助 BaseImageLoaderStrategy 扩展 Glide 的自定义配置
- 增加 IRepositoryManager#getContext() 方法
- 增加 ArmsUtils#obtainAppComponentFromContext(Context) 方法,可直接从 Context 获取 AppComponent ,避免频繁强转
- 移动 imageloader 包,到 http 包下
- 修复 BaseHolder 中强行使用 AutoLayout 的 Bug
- 优化 Demo UserModel 中,请求数据的逻辑
「Version: 2.1.5」Sunday, 23 July 2017: Show Diff
- 改善 RepositoryManager 的使用方式,使 Retrofit 和 RxCache 以及它们生成的 Interface 支持懒加载,以后不用在项目初始化时,初始化它们需要的 Service ,所以移除 RepositoryManager#injectRetrofitService(Class) , RepositoryManager#injectCacheService(Class) 以及 ConfigModule#registerComponents(Context,IRepositoryManager) 方法,但使用方式不变
- 改善 AppDelegate 结构,使 AppDelegate.Lifecycle 改名为 AppLifecycles
- 增加 AppLifecycles#attachBaseContext(Context) 方法,可以做一些 MultiDex 的初始化和插件化框架等框架的初始化,在 ConfigModule#injectAppLifecycle(Context, List) 中使用
- 增加 项目启动后仍可以改变 Retrofit 的 BaseUrl 的功能,详情请查看 Demo 的 GlobalConfiguration
- 增加 RequestInterceptor 可控制日志打印等级的功能,可使用 GlobalConfigModule.Builder#printHttpLogLevel(RequestInterceptor.Level) 控制框架 Http 信息打印的级别
- 增加 RepositoryManager#clearAllCache() 方法,可清理 RxCache 中的所有缓存
- 增加 CONTRIBUTING_APP 页面,收集开源的 MVPArms 项目,供大家学习
- 修复 Demo 中出现 Fragment 内存泄漏的问题 (xiaobailong24)
- 修复 Demo 中出现 findbugs:jsr305 冲突的问题 (xiaobailong24)
- 优化当使用者在 XML 中使用 标签,静态生成 Fragment 时出现的兼容问题 (xiaobailong24)
- 优化 proguard-rules.pro
- 优化 GlobalConfiguration 中 配置 ToolBar 的模块,为了提高 Fragment 的兼容性,将逻辑从 onActivityCreated 移动到 onActivityStarted
- 优化 Demo 中配置 Timber 部分,使使用者可以将 MVPArms 的日志打印框架随意切换到 Logger 或其他日志打印框架
- 优化 RequestInterceptor ,使框架 Http 日志打印,可解析 XML 格式的结果
- 优化 AppManager#getCurrentActivity() 方法,降低值为 null 的概率
- 提升 框架所使用的部分三方库的版本
- 提升 Support-Library 为 v25.4.0 ,注意需要在根目录的 build.gradle 中加入:
allprojects {
repositories {
jcenter()
maven { url "https://maven.google.com" }
}
}
「Version: 2.1.0」Wednesday, 14 June 2017: Show Diff
- ProgressManager 一行代码监听 App 中所有网络链接的上传以及下载进度,以及 Glide 加载进度
- RxErrorHandler 升级为 2.0.2 ,优化 GlobalConfiguration 中 responseErrorListener 错误处理细节
- 优化 ClientModule 和 GlobalConfigModule 的 Dagger 注入方式
- 规范一些方法的方法名,发现方法找不到,可能是改了方法名,大部分只是把方法名首字母改为小写
- 优化 PermissionUtil ,请参照 UserPresenter 中请求权限的写法
- 优化 proguard-rules.pro 规则
- 优化 App 出现 onLowMemory 时的应对策略
- 优化 AdapterViewPager
- 优化 AppManager
- v2.1.0 之后,本框架并不强制你使用 AutoLayout,如果你不想使用 AutoLayout,就不要配置 AndroidManifest 中的 meta-data,并保证项目中没有使用 AutoView
- 优化 RequestInterceptor ,使打印日志更加智能准确
- ActivityLifecycle 不再主动注销 FragmentLifecycle ,Activity 销毁时会自动注销
- 优化 dependencies 的结构,去除框架对 cardview-v7 的直接依赖
- IActivity 和 IFragment 的 initView() , initData() 改为 initView(Bundle) , initData(Bundle) 针对需要在 Activity 被重建时恢复数据的情况 (请使用全局替换减少更新的成本) ,以及更新 MVP_generator_solution 模版
- 优化 AppManager#getCurrentActivity 为 null 的情况
- 升级一些三方库以及 buildToolsVersion 的版本
- 优化 Demo 返回键的图标
- 删除
arms
包下 AndroidManifest 的内容 - 优化混淆规则
- 使用
RxErrorHandler
v2.0.1 - 修复 GlobalConfigModule#addInterceptor 奔溃的 Bug
- 修复 FragmentDelegateImpl 在 Activity 横竖屏切换时崩溃的 Bug
- 优化 ActivityDelegateImpl 和 FragmentDelegateImpl,Presenter 在
Activity.setContentView()
之前实例化 - 优化 Demo
- 将框架提升至
Rxjava2
,1.x
以后只会修复bug,不会更新新功能,建议使用2.x
- 修复 FragmentDelegateImpl unbind执行多次的bug
- 修复 FragmentDelegateImpl 序列化失败的bug
- 修复 FragmentDelegateImpl unbind执行多次的bug
- 近期的更新内容汇总成一篇文章
- 删除ImageModule,ImageLoader 通过 GlobalConfigModule 配置图片加载方式
-
Retoift
Okhttp
RxCache
Gson
等框架可以通过GlobalConfigModule 自定义配置它们特有的属性 - 增加 ActivityDelegate 同样为了解决,java不能多继承的问题,可以自己自定义自己的BaseActivity,而不会影响整个框架
- 增加 FragmentDelegate 同样为了解决,java不能多继承的问题,可以自己自定义自己的BaseFragment,而不会影响整个框架
- 在 AppComponent 中增加 extras,用来存取一些整个App公用的数据,切勿大量存放大容量数据
- ConfigModule 可以向 Activity 或 Fragment 中注入一些公用逻辑,比如增加 ToolBar ,不用再通过继承的方式添加这些公用逻辑
- 修复Demo中,CurrentActivity为null时报错的Bug
- GlobeConfigModule改名为GlobalConfigModule,GlobeHttpHandler改名为GlobalHttpHandler
- 新增App接口,自定义Application必须实现于App接口
- 增加AppDelegate,将Application相关的生命周期逻辑可配置和扩展
- 将BaseApplication的逻辑抽到AppDelegate中,删除WeApplication
- 优化UiUtils,删除里面的静态Context
- 允许
Glide
使用Okhttp
作为网络请求层,这样日志拦截器也可以监听图片请求的所有参数和状态 - 优化RequestInterceptor打印日志的结构,使网络接口的监听更加清晰
- 改变框架配置信息的配置方式,使用继承ConfigModule并在AndroidManifest声明的方式,和
Glide
的方式一致 - 使用RepositoryManager替代ServiceManager和CacheManager,删除WeActivity和WeFragment,以后直接继承BaseActivity和BaseFragment,将AppComponent放入arm包中
- 使用AnnotationProcessor代替APT
- Demo使用lambda
- 更新Support库和一些三方库
- 调整Config.gradle的结构
- 修复Demo加载更多时,刷新整个页面的Bug
- 修复GlobeHttpHandler.EMPTY返回为null的Bug
- 将管理Activity的代码从BaseActivity中抽到ActivityLifecycle中统一管理
- 修复UserItemHolder中,Glide引起的内存泄露问题
- ImageLoader增加取消执行中的任务和清理缓存功能
- 优化缓存目录分类,每个库分配一个独立的本地缓存文件夹,比如
RxCache
和Glide
的缓存文件夹是分开的 - 修复Demo本地缓存不可用的问题
- Demo启动后加载第一个页面时,将默认不使用本地缓存修改为默认使用
- 修复因为GlideImageConfig的getTransformation()方法返回为Transformation,导致
Glide
调错transform重载方法,不能显示裁剪图片的Bug
- 将
RxPermission
更新到0.9.1,之前的版本构建RxPermission只用传入context,它内部实现请求权限的方式是通过打开一个透明的Activity,通过这个Activity请求权限,请求成功后会finish,现在优化后是通过内部持有的Fragment绑定到请求的Activity,实现请求权限,所以现在RxPermission
,不再是单例,并且要想拿到RxPermission
对象,必须通过构造函数传入当前的Activity,这点要注意一下
- 简化版本更新方式
- 优化UserModule的注入方式,所有页面的注入方式以UserActivity的MVP为准
- 优化AppComponent中所有单例类的注入方式
- 新增GlobeConfigModule,使用Builder模式管理应用的所有配置信息并通过
Dagger
的方式注入给需要的地方
- 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 更新日志