Android通用业务弹窗管理方案V3- 业务流程控制

最后为了支持主流的回调框架Rxjava在时间和空间上的统筹 增加了其上包含通用逻辑的PopRxSubscriber 用户可以继承进行自定义扩展

流程模拟

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上图是以APP开发中最常见的版本更新和公告弹窗的数据交互与显示流程为例的逻辑图

它分为两个部分 分别是引入流程控制前后的逻辑顺序我们可以清晰的发现两者的区别

通常流程下我们必须在每个流程的中介点进行数据产出和UI生成的操作 在框架的帮助下 我们只需要考虑产生UI 具体的逻辑由事先订好的规则由任务管理器帮我们处理

具体使用

基础使用

//创建网络请求任务
Task taskUpdate=new Task();
//新建Poplayer弹窗
PopLayerView mLayerView1 = new PopLayerView(this,LayerConfig.dialog5);
Popi downloadPop = new Popi.Builder()
.setmPopId(30)
.setmPriority(6)
.setmCancelType(TRIGGER_CANCEL)
.setLayerView(mLayerView1)
.build();
//加入任务管理
TaskManager.getInstance(this).pushToQueue(taskUpdate,mUpgradePopi)

自定义回调

TaskManager.getInstance(this).onTaskGoOn(taskNotice);//回调成功
TaskManager.getInstance(this).onTaskInterupt(taskUpdate);//回调失败

如果您使用的是Rxjava实现回调可以继承框架中自带回调逻辑的PopRxSubscriber

public class MySubscriber extends PopRxSubscriber {
public MySubscriber(Context mContext, Task task) {
super(mContext, task);
}
}

优缺点分析

优点:就代码而言 能解决一个接口有多处调用点的问题 弹窗逻辑上的显示由优先级判断,并且解决了网络逻辑业务无法使用弹窗效果的问题

缺点: 摒弃了某些接口的懒加载特性

心得

发布v3之前我也很怀疑 这个问题是否有解决办法 是否需要花费太多的时间 所以一直犹豫要不要在有限的时间来做这个东西,但其实只要将复杂问题分解下 逐个击破其实并没有想象的那么难缠

第一步 将其中涉及的关键成员都整理起来 阐明对应的职责 用代码实现出一个大概

第二步 将复杂的问题 最小化具象化 将逻辑写下来 根据逻辑和成员类写测试代码

第三步 考虑N+1种可能 将简单问题进行N种可能的适用化 并逐步用在小范围的业务代码上

关于项目

PoupoLayer

Android通用弹窗管理框架,支持网络回调业务逻辑弹窗,内部维护弹窗优先级队列 具备弹窗管理扩展功能 整合Dialog,PoupoWindow,悬浮Widget,透明Webview,Toast,SnackBar,无需再为繁琐的业务弹窗逻辑所困扰

具体如何使用 可以去github.com/MrCodeSnipe…阅读下面的使用说明文档

您也可以下载Demo体验一番 如有问题 可以在Github上打开Issue 我会第一时间回复

如果你对往期版本感兴趣 欢迎前往 观看 别忘了点个赞哟!

Android通用业务弹窗管理方案V1

Android通用业务弹窗管理方案V2

V1方案

| 版本号 | LOG | 进度更新 |

结尾

好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,可以来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。

这里放上一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套进阶学习的视频及面试专题资料包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 28
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个通用Android弹窗管理框架,内部维护弹窗优先级队列 具备弹窗管理扩展功能 整合Dialog,PoupoWindow,悬浮Widget,透明Webview,Toast,SnackBar,无需再为繁琐的业务弹窗逻辑所困扰如何添加依赖只需要两行代码轻松接入//add this to your repositories  maven { url 'https://www.jitpack.io' } //add this to your dependencies implementation 'com.github.MrCodeSniper:PopLayer:2.0.0'具体如何使用1.根据策略创建对应的弹窗view//Dialog形式 PopLayerView  mLayerView = new PopLayerView(this,R.layout.common_dialog_upgrade_app); //透明Webview形式 PopLayerView mLayerView = new PopLayerView(this,LayerConfig.redPocketScheme);2.开始装配弹窗配置Popi mUpgradePopi1 = new Popi.Builder()                 .setmPopId(4)//弹窗的唯一标识 当id发生改变 视为新的弹窗                 .setmPriority(2)//优先级这里不具体划分对应的范围 值越小优先级越高                 .setmCancelType(TRIGGER_CANCEL)//弹窗消失的类型分为 TRIGGER_CANCEL(触摸消失) COUNTDOWN_CANCEL (延时消失)                 .setMaxShowTimeLength(5)//最长显示时间(S)                 .setMaxShowCount(5)//最大显示次数                 .setmBeginDate(1548858028)//开始时间 2019-01-30 22:20:28                 .setmEndDate(1548944428)//结束时间 2019-01-31 22:20:28                 .setLayerView(mLayerView)//弹窗View                 .build();3.纳入弹窗管理//纳入弹窗管理 PopManager.getInstance().pushToQueue(mUpgradePopi); //开始显示弹窗 PopManager.getInstance().showNextPopi();效果预览未来的计划逐步统一 其他类型的弹窗 希望能提供给大家一个较为全面的应对业务需求的弹窗管理框架版本记录V1方案版本号LOG进度更新V1.0.0项目开源,完成弹窗管理与Dialog形式扩展Dialog策略扩展完成V1.0.1修复Dialog策略无法获取dialog实体bugDialog策略优化V1.0.2修复activity摧毁造成的弹窗异常 bugDialog策略优化V1.0.3优化了弹窗的使用更加方便快捷框架使用优化V2方案版本号LOG进度更新V2.0.0正式加入透明Webview弹窗策略扩展透明Webview策略扩展完成作者介绍Hello 我叫lalala,如果您喜欢这个项目 请给个star 能follow我那真是太好了!!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值