Android自定义框架篇
文章平均质量分 61
蜗牛慢慢跑
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
自定义UI(由上而下版)
上个版本是从单元素RowView开始往外写,一层一层的套,这个版本从整体架构开始,由外而内的写,并且增加了RowView的多样性。 由于增加了RowView的多样性,因此加入了BaseRowView和BaseRowDescriptor概念。一、框架思路图二、RowView关系图demo只创建了两种不同到RowView,大家可根据自己的需求创建更多的RowView元素,只需原创 2016-01-07 16:22:40 · 764 阅读 · 0 评论 -
第二阶段 6、实现全部任务恢复下载及优化
一、实现全部任务恢复下载 思路: 将所有操作过的Entry保存起来,当点击恢复所有时,从保存Entry的集合中遍历出所有暂停状态的Entry,依次加入下载队列中,即可实现全部任务的恢复下载功能。方案: 方案一:在DownloadService中创建保存被操作过得Entry的集合,分别在所有功能操作方法中对该集合进行增删操作。 方案二:在DataChanger中创建该集合,在被观察者通知原创 2016-01-15 13:53:18 · 436 阅读 · 0 评论 -
第二阶段 5、实现全部任务的暂停
思路:1、activity_list.xml添加全部暂停,全部恢复按钮<LinearLayout android:id="@+id/mBtn" android:layout_width="match_parent" android:layout_height="wrap_content" android:orienta原创 2016-01-15 13:51:18 · 652 阅读 · 0 评论 -
第二阶段 4、限制同时下载的最大任务数
问题描述:只要点击下载按钮就能开始下载,没有数量的限制,本阶段加上限制。 解决方案:增加任务队列,存储超出最大值的任务,当正在下载的任务取消,暂停,完成之后,再从任务队列中取出最先进入队列的任务,自动下载。1、DownloadService(1)在服务类中添加任务队列,将处于等待状态的下载Entry放入该集合private LinkedBlockingQueue mWaiting原创 2016-01-15 13:48:23 · 759 阅读 · 0 评论 -
第二阶段 3、模拟多任务下载
上阶段已完成单任务的下载流程,本阶段拓展到多任务下载 实现方法:通过ListView实现多任务同时下载问题描述:多线程下载时,下载任务在子线程启动,UI应在主线程中修改 解决方案:创建Hander,通过handler将修改后的Entry发送给主线程1、增加ListView和item的布局activity_list_view.xml"http://schemas.andr原创 2016-01-15 13:43:22 · 480 阅读 · 0 评论 -
第二阶段 2、添加多线程任务,完善下载,暂停,继续,取消四个功能
问题描述:添加多线程下载任务 解决方案:增加线程池,通过线程池去启动下载任务1、DownloadServiceonCreate()方法中添加线程池ExecutorService mExecutors = Executors.newCachedThreadPool();startDownload()方法中启动任务时改成线程池启动线程private void startDow原创 2016-01-15 12:12:59 · 630 阅读 · 0 评论 -
第二阶段 1、完善整体流程
在上一阶段中,基本流程已经跑通,基本实现用户发起下载操作,DownloadManager调用add方法开启DownloadService服务,DownloadService根据动作类型执行下载任务,被观察者分别在下载前、下载中、下载后通知观察者改变状态大致流程:用户–>DownloadManger(开启服务)–>DownloadService(开启任务线程)–>DownloadTask原创 2016-01-15 12:09:01 · 485 阅读 · 0 评论 -
第一阶段 串联流程 TODO + 伪代码
准备类:1、DownloadManager 下载入口类 分离View层和业务逻辑层,收集用户所有的动作,然后交给DownloadServer处理 2、DownloadServer 服务类 开启服务,在后台进行下载任务 3、DownloadEntry 下载实体类 4、DownloadTask 创建下载任务 5、Constant 常量声明类 6、DataWatcher 观察者 7、原创 2016-01-15 11:56:32 · 628 阅读 · 0 评论 -
多任务多线程断点续传框架-总序
功能点:1、支持多任务下载 2、支持多线程断点下载 3、下载进度更新 | 暂停 | 取消 | 恢复 4、支持后台下载,notification更新 5、网络切换智能判断 6、下载队列优先级提炼技术点:1、断点续传 Range (Range头给服务器,给客户端相应的start-end之间的数据,即分段下载) 2、观察者模式 Observer Observable (状态更原创 2016-01-15 14:09:42 · 1312 阅读 · 0 评论 -
自定义UI(由下而上版)之第三阶段
第三阶段:创建ContainerView这里继承LineaLayout,也可继承ScrollView,这样页面可以滑动,根据自己的需求确定一、创建GroupViewDescriptor,描述GroupView的属性public class GroupDescriptor { public String title; public List descriptors; publ原创 2016-01-07 16:13:10 · 602 阅读 · 0 评论 -
自定义UI(由下而上版)之第二阶段
第二阶段:创建GroupViewRowView已经创建好,将RowView装进GroupView一、创建RowDescriptor作用:描述RowView包含的信息,当添加不同样式的RowView时,同时创建相对应的Descriptor即可public class RowDescriptor { public int iconResId; // 资源id public原创 2016-01-07 16:09:40 · 456 阅读 · 0 评论 -
自定义UI(由下而上版)之第一阶段
第一阶段:自定义RowView这里的自定义View并不是某种特效,而是封装出的可多次复用View框架。可实现以下功能:(1)交互对象间的松耦合设计 (2)一次编写,多处适用 (3)轻松应对需求变动 (4)View统一管理最终效果图:大致思路:RowView是最底层的元素,根据不同需求自定义样式; GroupView和ContainerView是容器; 将RowView装进GroupView原创 2016-01-07 16:04:03 · 689 阅读 · 0 评论 -
第二阶段 7、添加数据库逻辑,防止App被强杀后的数据丢失
应用场景: 场景一:退出应用,任务在后台服务中执行,再次进入应用时,显示的数据会不同步。 场景二:下载数据存在内存中,当应用被强杀后,再次进入应用时,数据会被清空。解决思路: 场景一:上一阶段中创建的mOperatedEntries集合中保存的是所有被操作过的最新的下载Entry,可在onCreate()方法中将当前显示的entry的最新状态从mOperatedEntries集合中提取出原创 2016-01-15 13:55:52 · 678 阅读 · 0 评论
分享