WordPress Blog Android客户端源码分析(一)

一直想找一个大型的Android开源项目进行分析,由于自身和导师课程需要选择了wordpress的Android客户端源码进行学习和解读。源码github官方下载地址:开源项目地址。分析源码的最佳手段当然是动手实践,能够修改源码并看到实际的显示效果,成果的展示是自己前进的最好动力。

配置Android工程项目

源码的编译平台基于Android studio,所以还执着于eclipse开发的朋友需要改变一下了,工程导入的时候确保你的网络畅通,如果能用VPN是更好的了,gradle下载的依赖包会很慢,可能需要等好一会。工程配置完成后,直接编译生成apk文件,能用手机开发就能直接看到编译效果了。

搭建wordpress站点服务器

wordpress apk程序功能分为两大模块:1.登录官网的博客站点;2.登录自定义的博客站点。为了分析需要我们需要搭建自己的wordprss服务器站点,wordpress服务器源码官方地址:中文简体版。wordpress服务器源码运行环境需要lamp或者wamp测试环境,假定服务器环境你已经配置完成,只需要将wordpress源码放到Apache服务器的根目录下即可完成自定义wordpress站点的配置,具体配置步骤可参考网络。有一点需要指出:配置wordpress的时候,指定域名为具体的IP地址不要用localhost代替,不然会出现很大的问题。

Android源码目录架构

借用github一张图片展示Android源码目录主体架构: Android源码目录主体架构图
客户端的核心代码在wordpress/src/main/java/org下面,里面包含两个包:wordpress.android和xmlrpc.android。从名称上面我们就可以看出它们的区别,wordpress.android主要负责客户端的UI设计和显示,程序的逻辑处理。xmlrpc.android负责xmlrpc通信协议的接口定义,最主要的方法在XMLRPCClient类中定义:Object call(String method, Object[] params) ,客户端向服务器发送数据请求都是通过call方法来实现的,而服务器提供了一系列的API(本地方法)处理客户端的请求,这个过程是整个项目的核心处理逻辑。

Client功能设计

用户登陆认证

1.官网站点wordpress.com
—用户名和口令。
—Oauth2.0认证。
—access token保持长久的连接。
2.开发人员搭建的wordpress服务器
—用户名、口令和站点IP。
—认证方式与官网用户相同。
从程序主界面上分析两种认证方式:用户认证站点不同。
第一次认证后获得access token进入Blog主界面,每次Request发起请求需要加入access token,获得服务器授权。
官网站点登陆界面 自定义wordpress服务器站点登陆界面

blog主界面

1.自定义的左侧滑出菜单(SlidingMenu、MenuDrawer)
2.下拉菜单Item加载
每个Item对应一个Blog ID,点击事件触发后从本地数据库加载Blog Content。
网络正确连接时,从Server端更新Blog Content并存储到本地数据库中。
3.下拉菜单Item条目内容
—博文:用户创建的博客列表。
—媒体:用户上传的视频和图片资源。
—站点:用户博客注册的网上访问站点。
        登陆程序后的blog主界面

blog基本操作

blog基本操作选项
blog编辑选项

Client网络通信过程

volley

—2013年Google I/O大会上推出的Android平台上的网络通信框架——Volley。
—volley适合去进行数据量不大,但通信频繁的网络操作。
—针对资源类型:JSON数据对象和图片加载两种情况。
—使用方法:
git clone https://android.googlesource.com/platform/frameworks/volley
下载源码包,eclipse中编译成jar包,导入工程后即可使用。
注意:android:minSdkVersion设置为8以上。
JSON和ImageView获取:网络请求request(JsonObjectRequest和ImageRequest)返回对应的response。

xmlrpc

—定义:使用http协议作为传输协议的rpc机制,使用xml文本的方式传输命令和数据。RPC通信框架必然包含两个部分:rpc client和rpc server。
—xmlrpc client
向rpc server发送调用方法请求,并接收方法的返回数据。
Object call(String method, Object[] params)方法,返回结果是服务器端数据经过序列化后的Object对象。
—xmlrpc server(class-wp-xmlrpc-server.php)
响应rpc client的请求,执行方法,并回送方法执行结果。
提供的API类型:WordPress API、Blogger API、MetaWeblog API提供了一系列的method给Client调用,典型的有wp.uploadFile、wp.getUsersBlogs等方法。

数据解析与显示

xml和JSON

—XML解析
DOM:将整个xml看成是一个树状的结构,解析时将整个xml文件加载到内存当中,可以通过某个节点访问到其兄弟或者是父类、子类节点。
SAX和PULL:都是基于事件驱动的xml解析器,在解析xml时并不会加载整个的xml文档,占用内存较少,Android开发中建议使用sax或者pull来解析xml文档。
Wordpress使用PULL方式:采用Android自带的org.xmlpull.v1 jar包来解析XML文件。
—JSON解析
3.0版本前的SDK需要导入gson的jar包。
json-lib。

ListView和Adapter

—界面数据加载与刷新
Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。如下图直观的表达了Data、Adapter、View三者的关系。
Android提供了BaseAdapter、ArrayAdapter、SimpleAdapter等适配器接口,通过绑定后端数据和前端的ListView来加载数据。
notifyDataSetChanged方法刷新ListView,可自定义刷新效果。

Client和Server通信

C/S架构通信流程

本篇文章主要从整体框架上分析了WordPress Android客户端的主体功能和相关技术实现,下面我将会开几篇blog分析技术源码的相关实现,有兴趣的朋友可以看后面的内容。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值