Android进阶练习一
1、有序广播:
https://github.com/wuzhuojun/BroadcastExample
说明:
在manifest.xml设置的广播是静态注册,只要软件安装在手机上广播就能够生效。
用代码实现的是属于动态注册,只有软件启动后广播才能够生效。
除了能够接收系统的广播,也能够自定义广播。
Android的广播按照接收顺序分两种类型:无序广播和有序广播。
无序广播是所有注册者都能收到的广播。
有序广播是能够指定接收顺序,层层下达,能够设置接收者的优先级,优先级高的先收到而且能够把传递的数据进行修改。
另外广播还能够设置为本地广播,只能够是本进程才能收到的广播。
2、定时任务(定时访问网络数据/闹钟)
https://github.com/wuzhuojun/AlarmService
说明:
这是实现定时访问网络的一种手段,手机切换到后台仍然能够定时请求网络数据。可以作为消息通知拉数据的处理方式。
主要原理:
1、启动一个Service
2、Service使用AlarmManager启动定时闹钟
3、定时闹钟执行时发送一个广播事件
4、自定义的广播接收者收到广播后执行网络请求动作,再次启动Service 回到第1步,一直循环
3、跨进程通信
https://github.com/wuzhuojun/AIDLService
说明:
APP有时候需要调用第三方APP的服务,那么就要用到跨进程通信(IPC)。
由于是跨进程通信就要考虑到通信协议的问题,Android提供AIDL的解决方案。
APP请求方是客户端,APP被访问方是服务端。
首先要定义AIDL文件,编译后会生成接口文件(是一种代码自动生成的原理)
服务端注册远程服务,实现AIDL生成的接口并作为Binder对象返回。
客户端实现绑定服务,并定义ServiceConnection来接收服务端传过来的Binder引用,通过该引用能调用远程服务的功能。
需要注意的是,客户端的AIDL与服务端的AIDL文件的命名空间要一致,否则通信会失败。
4、ListView + 下拉刷新 + 分页加载更多 + 数据缓存 + Fresco图片缓存组件
https://github.com/wuzhuojun/ListViewExample
说明:
使用PtrClassicFrameLayout组件来实现列表的下拉刷新,支持多种控件的下拉动作。https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh
判断列表滚动的位置来判断是否已经上拉到底部,然后执行分页加载。
网络请求用OKHttp https://github.com/square/okhttp
数据缓存用的是ACache,轻量级只有一个Java文件,你值得拥有。 https://github.com/yangfuhai/ASimpleCache
5、把ListViewExample改造MVP模式,增加了单元测试的练习
https://github.com/wuzhuojun/MVPexample
说明:
以往MVC模式下,Activity及承担了View的角色同时也要处理业务逻辑,代码变得很臃肿。
MVP模式把业务逻辑从Activity和Fragment拆分到Presenter。
流程是:
Activity/Fragment接收用户动作 =》 Presenter请求业务逻辑的调度 =》Model请求网络数据=》Model回调Presenter=》Presenter回调View=》View回调Activity/Fragment实现界面响应
由于View、Presenter、Model都有对应的接口实现因此能够执行一路往上的回调动作。
注意这里的Model是执行网络请求或者数据缓存的模块,而Bean是业务数据实体。
看了关于重构方面的书再次认识到单元测试的重要性,它能够帮你更高效的编写正确的生产代码。
执行单元测试时,看到一路的绿灯的感觉别提有多爽了。
Android进阶练习一的更多相关文章
- Android 进阶 Android 中的 IOC 框架 【ViewInject】 (下)
上一篇博客我们已经带大家简单的吹了一下IoC,实现了Activity中View的布局以及控件的注入,如果你不了解,请参考:Android 进阶 教你打造 Android 中的 IOC 框架 [View ...
- 【Android进阶系列教程】前言
起因 因为初学Android的时候还没有写博客的意识,现在Android的门是入了,正在进阶的道路上行走,但是就这一路也走了不少的弯路.我想,总得来说Android入门还是比较容易的,网络资源比较丰富 ...
- Android开发面试经——4.常见Android进阶笔试题(更新中...)
Android开发(29) 版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http:/ ...
- [置顶] 我的Android进阶之旅------>介绍一款集录制与剪辑为一体的屏幕GIF 动画制作工具 GifCam
由于上一篇文章:我的Android进阶之旅------>Android之动画之Frame Animation实例 中展示的是Frame动画效果,但是之前我是将图片截取下来,不好说明确切的动画过程 ...
- 我的Android进阶之旅------>经典的大牛博客推荐(排名不分先后)!!
本文来自:http://blog.csdn.net/ouyang_peng/article/details/11358405 今天看到一篇文章,收藏了很多大牛的博客,在这里分享一下 谦虚的天下 柳志超 ...
- 《Android进阶》之第七篇 NDK的使用
<Android进阶>之第一篇 在Java中调用C库函数 这一篇列举的方法是在NDK没有出来时候用的方式 在Android发布NDK之后,可以这样使用 一.首先下载android-ndk ...
- 我的Android进阶之旅------> Android在TextView中显示图片方法
面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包括图像的文本信息).并简要说明实现方法. 答案:Android SDK支持例如以下显示富文本信息的方式. 1.使用T ...
- Android进阶 | 摆脱斗图 | 行业交流 | 深度学习 | 付费
Android进阶 | 摆脱斗图 | 行业交流 | 深度学习 | 付费 其实在很早的时候我就有想过,是不是退出一些群,因为群太多了,里面的水友也多,基友也多,就难免会水起来,这样既耽误学习又耽误工作, ...
- Android进阶(二十八)上下文菜单ContextMenu使用案例
上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...
- Android进阶(二十)AndroidAPP开发问题汇总(四)
· Android进阶(二十)AndroidAPP开发问题汇总(四) android:layout_width和android:width的区别 基中的android:layout_width和and ...
随机推荐
- 什么是Code Review
Code Review 是一种通过复查代码提高代码质量的过程,在XP方法中占有极为重要的地位,也已经成为软件工程中一个不可缺少的环节. 本文通过对Code Review的一些概念和经验的探讨,就如何进 ...
- jquery checkbox 全选、取消全选
$("#checkall").click(function(){ $("input[name='uid']").prop("checked" ...
- Delphi中ShellExecute使用详解(详细解释10种显示状态)
有三个API函数可以运行可执行文件WinExec.ShellExecute和CreateProcess.1.CreateProcess因为使用复杂,比较少用.2.WinExec主要运行EXE文件.如: ...
- 《Programming WPF》翻译 第9章 1.自定义控件基础
原文:<Programming WPF>翻译 第9章 1.自定义控件基础 在写一个自定义控件之前,你需要问的第一个问题是,我真的需要一个自定义控件吗?一个写自定义控件的主要原因是为了用户界 ...
- Xs and Os Referee
Xs and Os Referee 1 def checkio(game_result): 2 winner = 'D' 3 4 for row in game_result: 5 if row[0] ...
- 试用mysql的infobright引擎
海量数据分析处理,向来比较头疼费劲,特别是项目资金不允许的情况下,都是优先考虑开源软件,2007使用mysql,2009年尝试greenplum(公司最终选用oracle),20 ...
- structs2使用小结2
回顾之前做过类似structs2的知识点总结 Structs2历史.处理流程及与1.0版本的区别 Structs2配置文件.拦截器.校验等 EL表达式在JS中使用 ${}El表达式不能直接在单独JS文 ...
- HDU 1074 Doing Homework (状态压缩 DP)
题目大意: 有 n 项作业需要完成,每项作业有上交的期限和需完成的天数,若某项作业晚交一天则扣一分.输入每项作业时包括三部分,作业名称,上交期限,完成所需要的天数.求出完成所有作业时所扣掉的分数最少, ...
- 自己写jstl标签解析long时间
数据库里存储的是long型的时间,现在想输出到jsp页面,由于使用的是jstl标签,而要显示的是可读的时间类型,找来找去有个fmt:formatDate可以转化,但是只能转date型,long型则不可 ...
- 2D和3D空间中计算两点之间的距离
自己在做游戏的忘记了Unity帮我们提供计算两点之间的距离,在百度搜索了下. 原来有一个公式自己就写了一个方法O(∩_∩)O~,到僵尸到达某一个点之后就向另一个奔跑过去 /// <summary ...