MVPArt Versions Save

🎨 A new Android MVP architecture (此框架旨在解决传统 MVP 类和接口太多, 并且 Presenter 和 View 通过接口通信过于繁琐, 重用 Presenter 代价太大等问题).

v2.5.0

5 years ago

每次升级之前, 请一定记得先同步更新 config.gradle !!!

「Version: 2.5.0」Friday, 7 December 2018: Show Diff

v2.5.0 将一些 Art 核心库的代码抽取到了扩展库中,以便于框架使用者可以更灵活的选择不同的三方库,并且还可以减轻 Art 的体积,后续还会继续分拆更多的扩展库出来,让 Art 的扩展性更强,体积更轻,想让旧项目从 v2.4.1 升级到 v2.5.0 根据 这里 修改即可!!!

附赠 AndroidAutoLayout 迁移指南

注意!!! 由于 v2.5.0IView 中使用到了接口的默认方法,所以在升级 v2.5.0 之前必须保证项目使用了 Java 8 及以上

  • 提升 Gradlev4.6
  • 提升 Glidev4.8.0
  • 提升 Gsonv2.8.5
  • 提升 Daggerv2.19
  • 提升 Timberv4.7.1
  • 提升 Okhttpv3.12.0
  • 提升 Rxpermissionsv0.10.2
  • 提升 RxJavav2.2.4
  • 提升 RxAndroidv2.1.0
  • 提升 RetrofitUrlManagerv1.4.0
  • 提升 com.android.tools.build:gradlev3.2.1
  • 提升 android-maven-gradle-pluginv2.1
  • 移除 Art 中的 com.android.support:design 库,目的是减小 Art 体积, design 库中含有太多 View
  • 移除 Art 中的 AndroidEventBus
  • 增加 IntelligentCacheIntelligentCache 含有 LRU 算法的存储容器和可永久将数据存储在内存中的存储容器,对 IntelligentCache 的增删改查都可以根据需求在两个存储容器中选择一个进行操作
  • 新增 Platform 类,可管理 Art 中可扩展的三方库的依赖情况
  • 新增 EventBusManager 类,使用者可自由在 AndroidEventBusEventBus 中选择
  • 新增 AppComponent#executorService,提供一个全局公用的线程池给使用者
  • 新增 mContext 字段到 BaseFragment
  • 优化 Retrofit 获取 Service 的方式,根据知乎提供的方式,可以加快第一次获取 Service 的速度
  • 优化 IView,将部分接口方法改为默认方法,以后实现类不再需要实现 IView 的所有方法
  • 优化 PermissionUtil,当请求权限失败,可反馈所有请求失败的权限名称
  • 优化 Demo,将 Demo 中的屏幕适配框架从 AndroidAutoLayout 替换为 AndroidAutoSize
  • 修复 RepositoryManager#clearAllCache() 无效的问题
  • 修复 BaseActivity 中,当 xml 解析错误不会抛真实错误的问题
  • 修复 Art 会在网络请求体中有 '%' 字符时奔溃的问题
  • 修复当项目中使用 Logger 时,Art 网络日志打印会出现错乱的问题
  • 修复 AdapterViewPager 引起奔溃的问题,#219
  • 重构 ArtAndroidAutoLayout 的部分代码,并将代码抽取到扩展库 art-autolayout
  • 重构 ArtGlide 的部分代码,并将代码抽取到扩展库 art-imageloader-glide
  • 重构 AppManager,可使用静态方法 AppManager#getAppManager 直接获取 AppManager 实例,之前通过 AppComponent#appManager() 获取的方式废弃
  • 重命名 app -> demo

v2.4.1

6 years ago

每次升级之前, 请一定记得先同步更新 config.gradle !!! Show Diff

之前引入 v2.3.5 及以下的旧版本项目, 只须做一处修改即可兼容 v2.4.1, 请注意 向下兼容警告

  • 增加 FormatPrinter, 提供更规范的网络请求以及网络响应日志打印格式, 并且可以在 GlobalConfiguration 中根据自己的需求自定义想要的输出格式, 详见 Demo
  • 增加 BlurTransformation, 使 GlideImageLoaderStrategy 默认支持高斯模糊
  • 移动 RequestInterceptorhttp.log 包下, 引用了这个类的地方都需要重新导入正确的包名, 在 DemoGlobalHttpHandlerImplGlobalConfiguration 这两个类有引用 RequestInterceptor ( 向下兼容警告: 这里需要旧版本项目做出重新导包的调整 )
  • 优化 框架中的 Dagger 应用方式, 模板 也做了相应优化
  • 优化 Demo 图标
  • 优化 ImageConfigImpl, 新增几个字段 (isCircle, imageRadius, blurValue ...), 以添加几个 GlideImageLoaderStrategy 默认支持的 BitmapTransformation, 以后 ImageConfigImpl 将不能存放 BitmapTransformation 类型(之前的 transformation 字段将作废掉, 将在之后的版本被 删除 ), ImageConfigImpl 以及它的子类只能存放基础类型和 Android 包里的类, 尽量避免存放某个图片请求框架的特有类, 这样可以隔离耦合, 降低 ImageLoader 切换为其他图片请求框架的风险
  • 调整 minSdkVersion14 (之前是 15)
  • 修复 AnroidStudio v3.1.0 及以上版本日志输出格式混乱的问题, (据 JessYan 猜测, 可能是因为 AndroidStudio v3.1.0 及以上版本将极短时间内以相同 tag 输出多次的 log 自动合并为一次输出, 导致本来对称的输出日志, 出现不对称的问题)
  • 兼容 AnroidStudio v3.1.0 (模板 也已兼容)
  • 提升 RxErrorHandlerv2.1.1
  • 提升 RetrofitUrlManagerv1.2.5
  • 提升 GradlePlugins3.1.0
  • 提升 SupportLibraryv27.1.0
  • 提升 Retrofitv2.4.0
  • 提升 Daggerv2.15
  • 提升 Glidev4.6.1
  • 提升 Okhttpv3.10.0
  • 提升 RxAndroidv2.0.2
  • 提升 Rxjavav2.1.12
  • 提升 Upgrade Timberv4.7.0

v2.3.5

6 years ago

Show Diff 升级之前, 请一定记得同步更新 config.gradle !!!
之前引入 v2.3.5 以上的旧版本的项目, 无需任何修改即可直接升级, 如果之前自己自定义过 BaseActivityBaseFragment, 升级到 v2.3.5 之后还需要依照框架中的 BaseActivityBaseFragment, 实现 provideCache() 方法即可

  • 修复 ImageLoader 扩展后发生 ClassCastException 异常 #175
  • 修复 BadParcelableException 异常(#160, #180)
  • 增加 IActivity#provideCache()IFragment#provideCache() 方法, 提供在 ActivityFragment 的生命周期内存取一些必要的数据, 更高级的方式可使用 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
  • 提升 Okhttp 到 v3.9.1
  • 提升 RxJava 到 v2.1.8
  • 提升 RxCache 到 v1.8.3
  • 提升 RxPermissions 到 v0.9.5
  • 提升 Timber 到 v4.6.0

v2.3.1

6 years ago

之前引入旧版本的项目需要调整后才能兼容 v2.3.1, 请注意 向下兼容警告 Show Diff

  • 兼容 Android Studio v3.0 以及 Android Gradle Plugin v3.0
  • 支持 Android Gradle Plugin v3.0 的一些特性
  • 支持 Lifecycles of Architecture Components, 在 Presenter 中可直接使用 Architecture Components 提供的生命周期组件, 可与 ActivityFragment 的生命周期做绑定
  • 增加 CacheLruCache, 以存储一些框架必需的数据
  • 增加 shouldShowRequestPermissionRationale 方法到 RequestPermission 接口中, 当请求权限时用户选择不再询问则会回调此方法( 向下兼容警告: 这里需要旧版本项目作出调整 )
  • 优化 RxCacheConfiguration 配置 RxCache 的方式( 向下兼容警告: 这里需要旧版本项目作出调整 )
  • 提升 RxErrorHandler 到 v2.1.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() 在进程未被杀死时释放资源的问题

v2.2.3

6 years ago

Show Diff

  1. 提升 Android Support Library 到 v26.0.2
  2. 重构 AppManager ,增加 AppManager#getTopActivity(), AppManager#killAll(Class[]), AppManager#killAll(String...) 等方法,使 AppManager 更加强大,详细用法,请查看源码注释
  3. 增加 AppManager.HandleListener 接口,可扩展和遥控 AppManager 的更多功能,使用方法请参考 Wiki 以及 Demo
  4. 优化 GlobalConfiguration ,使结构更加清晰
  5. 优化代码风格
  6. 添加开源许可

v2.2.0

6 years ago

Show Diff

  1. RetrofitUrlManager 以最简洁的 Api 让 Retrofit 同时支持多个 BaseUrl 以及动态改变 BaseUrl
  2. 提升 Android SDK 以及 buildTools 到最新的 26 (Oreo)
  3. 提升 Android Support Library 到 v26.0.1
  4. 提升 框架所使用的部分三方库的版本(Rxjava2 v2.1.1 -> 2.1.3)
  5. 提升 Glide 到 v4.0.0 ,注意 v4.0.0 后不需要在 AndroidManifest 中声明 GlideModulemeta-data
  6. 提升 ButterKnife 到 v8.8.1,注意 v8.8.0 后需调用 ButterKnife.setDebug(true) (建议在 AppLifecycles#onCreate(Application) 中调用),ButterKnife 才会打印提示日志
  7. 更名 UiUtilsArtUtils
  8. 更名 CharactorHandlerCharacterHandler
  9. 更名 GlideImageConfigImageConfigImpl ,建议在项目中自行实现 BaseImageLoaderStrategyImageConfig 替换现有策略,因为默认提供的 GlideImageLoaderStrategy 只是为了快速使用 Glide ,实现比较简单,如果遇到复杂场景将无能为力,我为什么设计 ImageLoader ? 感觉比直接调用 Glide 复杂多了? 如果你直接使用 Glide 请求图片,当等你从 Glide v3.0 升到 v4.0 (或者更换图片请求框架)时,看着满项目报的红,你就知道为什么我要多封装一层,而不是直接调用
  10. 增加 GlideAppliesOptions 接口,帮助 BaseImageLoaderStrategy 扩展 Glide 的自定义配置
  11. 增加 IRepositoryManager#getContext() 方法
  12. 增加 ArtUtils#obtainAppComponentFromContext(Context) 方法,可直接从 Context 获取 AppComponent ,避免频繁强转
  13. 移动 imageloader 包,到 http 包下
  14. 修复 BaseHolder 中强行使用 AutoLayoutBug
  15. 优化 Demo UserModel 中,请求数据的逻辑

v2.1.6

6 years ago
  1. 优化ClientModule
  2. 优化一些不规范的类名
  3. 优化 BasePresenter
  4. 优化 Demo , doAfterTerminate() 改为 doFinally()

v2.1.5

6 years ago
  1. 改善 AppDelegate 结构,使 AppDelegate.Lifecycle 改名为 AppLifecycles
  2. 增加 AppLifecycles#attachBaseContext(Context) 方法,可以做一些 MultiDex 的初始化和插件化框架等框架的初始化,在 ConfigModule#injectAppLifecycle(Context, List<AppLifecycles>) 中使用
  3. 增加 项目启动后仍可以改变 RetrofitBaseUrl 的功能,详情请查看 DemoGlobalConfiguration
  4. 增加 RequestInterceptor 可控制日志打印等级的功能,可使用 GlobalConfigModule.Builder#printHttpLogLevel(RequestInterceptor.Level) 控制框架 Http 信息打印的级别
  5. 增加 RepositoryManager#clearAllCache() 方法,可清理 RxCache 中的所有缓存
  6. 修复 Demo 中出现 Fragment 内存泄漏的问题
  7. 优化当使用者在 XML 中使用 标签,静态生成 Fragment 时出现的兼容问题
  8. 优化 proguard-rules.pro
  9. 优化 GlobalConfiguration 中 配置 ToolBar 的模块,为了提高 Fragment 的兼容性,将逻辑从 onActivityCreated 移动到 onActivityStarted
  10. 优化 Demo 中配置 Timber 部分,使使用者可以将 MVPArms 的日志打印框架随意切换到 Logger 或其他日志打印框架
  11. 优化 RequestInterceptor ,使框架 Http 日志打印,可解析 XML 格式的结果
  12. 优化 AppManager#getCurrentActivity() 方法,降低值为 null 的概率
  13. 提升 框架所使用的部分三方库的版本
  14. 提升 Support-Libraryv25.4.0 ,注意需要在根目录的 build.gradle 中加入:
 allprojects {
     repositories {
         jcenter()
         maven { url "https://maven.google.com" }
     }
 }

v2.1.0

6 years ago
  1. ProgressManager 一行代码监听 App 中所有网络链接的上传以及下载进度,以及 Glide 加载进度
  2. RxErrorHandler 升级为 2.0.2 ,优化 GlobalConfigurationresponseErrorListener 错误处理细节
  3. 优化 ClientModuleGlobalConfigModuleDagger 注入方式
  4. 规范一些方法的方法名,发现方法找不到,可能是改了方法名,大部分只是把方法名首字母改为小写
  5. 优化 PermissionUtil ,请参照 UserPresenter 中请求权限的写法
  6. 优化 proguard-rules.pro 规则
  7. 优化 App 出现 onLowMemory 时的应对策略
  8. 优化 AdapterViewPager
  9. 优化 AppManager
  10. v2.1.0 之后,本框架并不强制你使用 AutoLayout,如果你不想使用 AutoLayout,就不要配置
  11. AndroidManifest 中的 meta-data,并保证项目中没有使用 AutoView
  12. 优化 RequestInterceptor ,使打印日志更加智能准确
  13. ActivityLifecycle 不再主动注销 FragmentLifecycle ,Activity 销毁时会自动注销
  14. 优化 dependencies 的结构,去除框架对 cardview-v7 的直接依赖

v2.0.4

6 years ago
  1. IActivityIFragmentinitView() , initData() 改为 initView(Bundle) , initData(Bundle) 针对需要在 Activity 被重建时恢复数据的情况 (请使用全局替换减少更新的成本) ,以及更新 MVP_generator_solution 模版
  2. 优化 AppManager#getCurrentActivitynull 的情况
  3. 升级一些三方库以及 buildToolsVersion 的版本
  4. 优化 Demo 返回键的图标