Android进阶练习一

原创 2016年08月30日 23:02:01

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开发项目源码,大部分功能相信可以在实战项目中直接使用,供大家下载学习,大部分项目是基于 Android Studio开发,IDE为E...
  • Tom_xiaoxie
  • Tom_xiaoxie
  • 2016年01月10日 09:24
  • 4852

Java程序员进阶必练题

No Topic Summary 1 JVM basic concept 1. What's is JVM 2. Concept of JV...
  • sxb0841901116
  • sxb0841901116
  • 2014年04月16日 00:35
  • 1525

【NumPy基础】100道numpy练习——进阶篇

选自numpy-100,当作熟悉NumPy的练习。NumPy只是一个数值计算的工具包,在实际的算法实现中来熟悉NumPy才是有效的,因此后面不打算继续写了,到此文为止,基本的语...
  • u012162613
  • u012162613
  • 2015年01月18日 22:56
  • 4670

Android进阶练习-自定义视图(3)

使视图可交互      绘制UI界面只是创建自定义视图中的一部分工作,你还应该去响应用户的输入,并且让这种响应更贴近现实生活,比如现实世界中的一些物理现象,一些人们的行为习惯等等, ...
  • Tibib
  • Tibib
  • 2013年03月24日 23:35
  • 1022

Android进阶练习-自定义视图(1)

自定义视图      Android框架虽然提供了许多与用户交互,并且能够展现各种数据的视图,但是有的时候Android内建的基本视图控件并不能够很好的满足一些特殊的要求,这个时候我们就需要...
  • Tibib
  • Tibib
  • 2013年03月12日 21:13
  • 1445

Android进阶练习 - 高效显示Bitmap(缓存 Bitmaps)

分类: Android 2013-04-07 17:25 448人阅读 评论(0) 收藏 举报 Android 目录(?)[-] 缓存 Bitmaps使用内存缓存使用磁盘文件缓存处理设备...
  • chq497130800
  • chq497130800
  • 2013年10月05日 23:48
  • 384

Android进阶练习 - 高效显示Bitmap(简介)

高效显示Bitmap - 简介      这一章节主要是学习下,使用一些常见的技术手段,在我们处理和加载 Bitmap  对象的时候,让我们应用的UI界面组件正常响应显示和避免超出应用的...
  • Tibib
  • Tibib
  • 2013年03月26日 23:21
  • 2492

Android进阶练习 - 高效显示Bitmap(缓存 Bitmaps)

缓存 Bitmaps      加载单独的一张图片用于显示是很简单的,但是如果一次性加载大量的图片时,事情就变得比较复杂了,在许多的情况下(像 ListView, GridView or V...
  • Tibib
  • Tibib
  • 2013年04月07日 17:25
  • 3998

Android进阶练习-让你的App可定位

让你的App可定位 用户一般随身携带他们的移动设备,一个独特的特性可用于移动应用程序的是位置识别,当你的应用合理的应用位置服务时,能为你的用户带来更好的移动体验 现在我们来学习怎么把位置服...
  • Tibib
  • Tibib
  • 2013年02月28日 16:59
  • 3222

Android进阶练习-匹配多种屏幕

Android进阶练习-匹配多种屏幕 这几天学习了Android下应用程序对不同屏幕密度适应的问题,其中涉及到图片资源,布局资源,使用固定尺寸,资源的查找规则等问题 屏幕概念 明...
  • Tibib
  • Tibib
  • 2013年03月06日 22:20
  • 1860
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android进阶练习一
举报原因:
原因补充:

(最多只允许输入30个字)