一口气看完驴友源码

 

一口气看完一个项目源码(一)

自学安卓也有一年时间了,很快到了要找工作的时候了,但是自己还只做了一个项目,怎么办?听前辈们说,找别人的源码研究,于是,说干就干,我这次找了网上找的一个驴友的源码,和大家讲解下里面的实现思路,帮助大家更快看完一个源码。为了读者方面,我也把这个源码贴出来,有兴趣的朋友根据步骤一步一步来。

 

       我们把这个软件安装完成后,发现里面的功能分为四个模块:旅游记忆,结伴游,好友/关注者,其他功能。其中,数其他功能里面的子模块数最多,所以我们从最多的讲起。

 

用户注册:这个功能整体上来说就是在安卓端填写信息提交到服务端保存起来这样一个需求,所以我们要做的就是写好安卓端的界面,然后一个提交按钮,把数据提交到服务器,怎么提交呢?驴友是这么做的:安卓端把用户信息以xml的形式装在一个StringBuilder里面,然后便是通过一个非常简单的HttpURLConnection请求,将数据写到服务器端,服务器端的servlet收到了数据就把客户端提交过来的这些数据保存到服务器的MySQL数据库中,(源码没做任何优化,我觉得可以加一个数据库连接池)。服务器对客户端提交的数据处理完了以后,给用户写响应数据,用户拿到这些数据判断是否登陆成功,是的话就转到主界面。

 

用户登陆:这个也很简单,原理和注册一样,也是安卓端写一个界面,然后用户提交用户信息到服务器,服务器也写一个servlet来处理这些数据,处理过程就是查询数据库,看有没有用户提交过来的这条用户记录,然后给用户回写一个响应,用户根据响应判断是否登陆成功。

 

新建记忆:这个也很简单,说的通俗点,和前面注册登陆流程没啥两样,还是客户端写好界面,提交数据到服务器,然后服务器处理数据,把这些数据保存到数据库,就这么简单。用户还可以选择保存到本地,也就是暂存,点击暂存按钮,数据就保存在Androidsqlite服务器中。

继续未发布的消息:这个也是很简单,因为新建记忆有暂存到本地Sqlite数据库,因此,我们就直接把暂存的数据从数据库里面取出来,然后装到一个bundle里面,通过intent 带到新建记忆的activity,然后新建记忆的activity对这些数据处理并填充到界面中。

 

发起结伴游:原来以为这个会有点不同的,看了以后发现和前面的几乎没啥不同,点击发起按钮的时候,把用户填写的数据发送到服务器servlet接受处理,然后给用户一个响应结果,客户端发过去用的还是StringBuilderXml格式,然后服务器通过Sax解析解析数据保存到服务器端的MySQL数据库。

 

以上便是“其他功能”这个模块里面的所有子功能实现。接下来讲旅游记忆模块。

旅游记忆模块实现步骤,第一步发一条消息给服务器,发消息的格式和上面讲的一样,只是发送的只有一条请求多少条数据的消息,服务器得到了用户要请求的条数后,取用户需要的条数返回给客户端,客户端通过inputStream 拿到服务端返回的数据,通过解析这些数据,把这些数据封装到集合里面,然后填充到ListView里面,显示给用户看。

 

 

结伴游模块和旅游记忆模块类似,请求方式和数据处理方式参照旅游记忆,但是这个新增了条目点击,点击条目跳转到详情显示页面,通过intent携带数据过去显示。

 

 

好友/关注者模块:

1)因为小生资质愚钝,里面的表结构没看懂,看懂的同学告诉我下。

大体步骤为下:

 

1.开启线程t1,用户请求服务器获取服务端数据库中的好友联系人列表,得到了好友列表后,通过客户端的解析,把数据封装在list容器中(这里是放在String类型的list中,我觉得可以放在一个BeanList中),也就是所有的好友。

 

2.开启线程t2,获取关注者数据,方法和t1一样,通过请求服务器获取到所有关注者的list

 

3.开启线程t3,获取所有好友申请的数据,然后也是装在好友申请的list中。

 

4.把获取到的这些数据填充到expandableListView里面,中间用到了onCreateContextMenu,百度之,发现这个东西和onCreateOptionMenu的最大区别在于前者是针对每一个View的,而后者只是针对当前activity的,只要给某一个view注册了contentMenu,长按这个view的时候都会响应菜单弹出事件,这个菜单和activity的菜单当然是区分开的。源码中对每一个expandableListViewitem都注册了相应的contentMenu,当用户长按的时候会有不同响应事件,然后通过调用onContextItemSelected处理菜单点击事件。以拒绝好友请求为例,当用户选择拒绝好友请求,响应事件就是向服务器的DeleteApplyServlet发送请求,然后服务器端删除这条请求记录。其它类似。

 

这样一个源码大致了解了,需要深入的朋友可以仔细看看源码,里面确实有些可以借鉴的地方。

 

猜你喜欢

转载自zhonglunshun.iteye.com/blog/2093803