文章目录
闲谈针对JetPack搭配设计模式构建一个简易通用的MVVM
在经过最近一段时间的工作经历加深了我对设计模式的一个重要性的理解。事情的起因在于,最近半年多换了转进一个新的项目组去维护迭代一个项目App。在这个项目中我发现了一个严重的问题,由于项目基本采用了MVVM的方式来作为解耦,但是由于前期不存在有明确的分工去构建一些基类的构建。导致一个很简单的基类Fragment、DialogFragment、Activity存在着四五种不同程度封装而且都没有写好。甚至连一些需要基于页面的生命周期的组件都没有管理好,譬如使用了华为的二维码扫码功能开放组件,每处使用的UI样式以及构建都大量使用了重复代码。导致研发效率低下的一个问题。面对这种问题我采用了在这里我给出我的一套思维方案:
论设计模式的重要性
使用代理模式解决统一显示LoadingDialog的问题
为什么说代理模式很重要。代理是具有一个可做可不做的思维模式。你可以这样设想。A、B产品都是能提供具有一定功能及作用。但是在于如果一个解决方案定型了使用A或者B的时候就会建立强绑定关系后续更换往往容易会出现大代价。为了解决产品迭代的,根据需求能够简单快捷的替换全局加载弹窗甚至可以某个页面自定义加载弹窗,统一使用代理方式去实现解耦。
论JetPack的重要性
JetPack作为Android新一代官方组件技术,其目的通过新一代的技术方案或者接口接口去解决以往的一些Android开发的痛点。接下来我会重点讲解我是如何利用这些去解决一些常见问题
动态请求权限
首先设想一下,如果App不进行一个动态权限申请,总是在当前页面启动时或者启动页面的时候就进行权限,往往容易存在一个弊端,闪退的bug。接下来请看如何闪退
那么针对现有项目容易出现这样的一个问题我是这样解决的
首先利用ActivityResultLauncher构建动态权限申请,并提供相应的成功以及失败的回调并且提供一个重试机制,期望图如下