APP之红点提醒三个阶段
下面这个页面就是我们进入APP后的主界面。客户选项的红点上数字就是显示我们没有查看的客户总数量。
当我们切换到客户这个fragment时,会显示贷款客户数量与保险客户数量。
当我们随便点击入一个选项,假如进入到保险客户的这个activity里面,ListView显示用户的信息,上面标记红点,代表没有没有查看的客户,没有红点的代表已经查看过的客户数量。
当我们点击一个有红点的客户信息的时候,需要向后端发送信息,代表我已经查看了这条信息。并且改变在主Activity的数量,和frament中的数量。如下图:
那么这个功能怎么实现以及怎么优化,我在实现这个功能的时候,经历的三个阶段。
第一种阶段:
思路:利用SharedPrefrence,和广播。
具体实现:当我们进入主Activity的时候,从后台读取数据得到客户总数量,保险客户总数量,贷款客户总数量,并把它存储到sharedPrefrence里面。再将主Activity读取SharedPrefrence客户总数量并显现出来。
当我们切换到frament的时候,从SharedPrefrence依次读取贷款和保险用户的数量,并且把它呈现出来。
当我们点击带有ListView中带有红点item的时候,改变SharedPrefrence中的客户数量和保险客户的数量,发送广播,通知改变。主Activity和fragment再从SharedPrefrence中对数据读取一次,然后发生改变。
我们发现,这个过程中所有操作都要使用到SharedPrefrence,而且代码全部写在各种Activity中,显得代码臃肿,代码没有复用性,没有逻辑。于是演化了第二种思路。
第二种阶段
思路:利用静态的数据拥有与应用的同样的生命周期,舍弃了SharedPrefrence。
具体实现:创建一个类,在类中设定3个静态整型,分别为客户总数量,保险客户数量,贷款客户数量。在这个类中分别写入三个方法。分别为根据客户数量判断红点方法,根据保险客户数量红点方法,根据贷款客户数量红点方法。
当我们进入主Activity的时候,将得到的数据分别存入3个静态数量。然后在主Activity中调用根据客户数量判断红点。
当我们进入fragment的时候,分别调用根据保险客户数量红点方法,根据贷款客户数量红点方法。判断保险客户和贷款客户红点显示的情况。
当我们点击ListView上显示有红点的item的时候,改变静态的客户总数量,保险客户数量,贷款客户数量。发送广播给主Activity和Fragment。然后在主Activity调用根据客户数量判断红点的方法;在fragment中调用根据贷款数量判断红点方法或根据保险客户数量判断红点方法。
第二种思路提高的代码的复用,并且利用的一个中心类控制所有操作,舍弃了对SharadPrefrence的频繁使用,根据我的测试,还能提高红点显示的速度。
第三种阶段
思路:不要广播,利用fragment的生命的周期和Activity的生命周期。
具体实现:
在第二种思路上扩展,继续使用一个中心类控制所有操作。
当我们点击ListView中的带有红点item的时候。只改变相应红点的数量,而不发送广播。而是在fragment使用在onCreatView()方法和Activity中onResume()方法中调用判断红点显示情况的方法。
我们知道,当我们从fragment的跳转时,会执行Fragmeng中的onDestroyView()方法,切换回fragment的时候,会执行onCreatView()方法。
跳转Activity的时候会执行onStop()方法,跳回的时候会执行onResume()方法。
第三种思路彻底利用生命周期,舍弃了广播的使用和简化的代码。
在整过过程的我们发现,一个好的思路是在你做项目的过程中慢慢得出来的,不是我们一步得到的。我们首先要用自己最能想到的方法实现这个功能再说,在这个基础之上,在对代码进行优化尤其在开发实际项目是,速度第一,性能第二。最好的策略就是快速完成项目,然后快速迭代,优化性能和代码。
APP之红点提醒三个阶段的更多相关文章
- Azure Data Factory(四)集成 Logic App 的邮件通知提醒
一,引言 上一篇有介绍到使用Azure Data Factory 复制数据,然后有集成 Azure DevOps 实现CI/CD,但是对于真正的项目来说,这些肯定是不够的,比如说在执行 Azure P ...
- 关于vs生成app错误提示,提醒Execution failed for task ':transformClassesWithDexForDebug'.
昨天将vs和android SDK更新之后生成app之后发现app生成出错,报错如下: FAILURE: Build failed with an exception. * What went wro ...
- 仿微信小红圈消息提示App消息红圆点提示
代码: <div class="wrap"> <div class="img"></div> <div class=& ...
- iOS10之Expected App Behaviors
昨天上架到appStore的时候碰到个问题,构建好后上传到itunesconnect的的包都用不了, 显示错误为:此构建版本无效. 或者英文显示为:ITC.apps.preReleaseBuild.e ...
- 评论 “App死亡潮:400万应用僵尸超八成,周期仅10月”
点这里 原文: App死亡潮:400万应用僵尸超八成,周期仅10月 时间 2015-04-05 22:48:19 和讯科技相似文章 (16)原文 http://tech.hexun.com/201 ...
- 打造支持apk下载和html5缓存的 IIS(配合一个超简单的android APP使用)具体解释
为什么要做这个看起来不靠谱的东西呢? 由于刚学android开发,还不能非常好的熟练控制android界面的编辑和操作,所以我的一个急着要的运用就改为html5版本号了,反正这个运用也是须要从serv ...
- 微信iOS收款到账语音提醒开发总结
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/yYCaPMxHGT9LyRyAPewVWQ 作者:l ...
- iOS后台唤醒实战:微信收款到账语音提醒技术总结
1.前言 微信为了解决小商户老板们在频繁交易中不方便核对.确认到账的功能痛点,产品MM提出了新版本需要支持收款到账语音提醒功能.本文借此总结了iOS平台上的APP后台唤醒和语音合成.播放等一系列技术开 ...
- 制作一个App的完整流程是哪些
APP开发流程其实并不复杂,但是对于客户来说,.一般移动APP开发都离不开UI设计师.前端开发.后端开发.测试专员.产品经理等,由于他们的工作性质都不一样,我们且先把APP软件开发项目分为三个阶段: ...
随机推荐
- POJ 2242
#include <iostream> #include <cmath> #include <iomanip> using namespace std; #defi ...
- easyUI datebox 日期空间斜杠格式化。例如将日期空间中显示2017-03-13,改为2017/03/13
easyUI datebox 日期空间斜杠格式化 将日期空间中显示2017-03-13,改为2017/03/13 //日期控件斜杠格式化 function formatDate(date){ if( ...
- Linux开发端口的基本操作命令
Linux端口操作命令 查看开放端口:firewall-cmd --list-all 开发8080端口 --permanent 代码永久开发:firewall-cmd --add-port=8080/ ...
- C++的开源跨平台日志库glog学习研究(三)--杂项
在前面对glog分别做了两次学习,请看C++的开源跨平台日志库glog学习研究(一).C++的开源跨平台日志库glog学习研究(二)--宏的使用,这篇再做个扫尾工作,算是基本完成了. 编译期断言 动态 ...
- Linux驱动:LCD驱动测试
(1) 进入内核源码目录中,make menuconfig -> Device Drivers -> Graphics support -> [M]Support for frame ...
- HMM分词实例
class HMM(object): def __init__(self): import os # 主要是用于存取算法中间结果,不用每次都训练模型 self.model_file = 'model/ ...
- 忽略“Signal: SIGSEGV (Segmentation fault)”
1. touch ~/.gdbinit 2. 在.gdbinit文件中添加“handle SIGSEGV nostop noprint pass”
- Golang 包依赖管理工具
1.godep:https://studygolang.com/articles/9877 2.dep:https://studygolang.com/articles/10589 3.glide:h ...
- 使用httpClient处理get请求或post请求
另外一个版本: http://www.cnblogs.com/wenbronk/p/6671928.html 在java代码中调用http请求, 并将返回的参数进行处理 get请求: public s ...
- 使用Visual Studio Code搭建PHP调试环境
1.需要安装的软件 Visual Studio Code. WAMP(包括Apache.MySQL.PHP.以及最关键的XDebug) 2.下载软件 Visual Studio Code,光看名字就知 ...