`
famoushz
  • 浏览: 2962640 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

lumaQQ移植到Android之重构篇

阅读更多

原文: http://blog.csdn.net/yunfeng007/archive/2008/10/06/3021043.aspx

版权说明:本文是基于开源LumaQQ下,开发者不直接参与QQ协议的分析工作,移植到Android平台纯粹是为了方便学习和研究之用,并且没有产生任何直接的经济效益,并且纯粹是个人的技术学习研究行为,与本人所在单位没有任何关系。此文的读者在使用过程产生的效益和涉及的法律责任与本人没有直接关系。如果影响到您或您的公司利益,敬请谅解并且与我联系,本人会第一时间作出处理。

 

开场白:搭载Android操作系统的手机G1发布也有一段时间了,虽然还没有正式发售,但上面的应用程序也逐渐的丰富起来,对于IM来说现在的G1已经拥有很多款流行的聊天工具了,像AOLYahoo!Windows Live Gtalk什么的,但对于国人来说,我们最熟悉,使用最多的QQ仍然没什么官方要开发的消息透漏出来,这可能也和现在的G1并不在中国发售有关系,所以我们仍然需要发扬黑客精神,继续我们非官方QQ开发之旅吧。

它山之石可以攻玉。lumaQQ中的UI部分虽然使用的SWT组件,但其中所使用到的设计思想我们还是可以借鉴的,让我们开始重构吧。

我们的QQ(注:这里的QQ代指我们的程序lumaQQME,而不是腾讯的QQ,以下部分没做说明默认如此)现阶段的代码好像一个大杂烩,几乎所有的代码都处于一个Activity中,界面和各种逻辑操作混杂在一起显得非常的混乱。一个好的设计要尽量做到界面和逻辑分离,界面和逻辑即使改动也没有影响或者影响最小。这里我们使用MVC模式来做到这一点。

MVC模式"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变ModelView,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。似的,只要Controller改变了ViewView会从潜在的Model中获取数据来刷新自己。这个是mvc的定义,让我们来看看QQ是如何根据MVC模式来设计的。

QQ中的Model主要是用户、分组和群。这些Model对象对QQ packet包提供的数据进行抽象,以此来提供给View

这里还有两个比较重要的类,一个是ModelUtils,这个是工具类,负责提供一些创建数据的方法;另一个是ModelRegistryModel的注册表,用于根据关键字段快速查找model

QQ中的Controller主要是QQEventProcessorUIHelper。前者提供对QQ事件的处理,后者为UI部分提供执行一些界面相关的操作;

QQ中的View部分使用Android SDK中提供的技术,使用Xml来做界面的描述,实现了界面和操作的分离。

  整体的类图如下

这是重构后的主要结构,不包括界面部分和一些其他辅助类的类图。

 

这里是最新的源代码下载,点击这里

分享到:
评论

相关推荐

    lumaqq for android demo

    《LumaQQ for Android Demo:探索移动通讯的创新实践》 在移动互联网时代,即时通讯应用已经成为人们日常生活和工作中不可或缺的一部分。"LumaQQ for Android Demo" 是一款专为Android平台设计的QQ客户端演示程序,...

    lumaqq for android 源代码

    LumaQQ的源代码中,我们可以看到它如何利用Android的Service组件来保持后台运行,即使在用户退出应用后也能接收到新消息。Service与Activity之间的通信通过Binder机制进行,确保了消息的实时传递。此外,为了节省...

    LumaQQ-Android.zip_Android即时通信_LUMAQQ安卓版_android

    《LumaQQ-Android:构建Android即时通信应用的洞察与实践》 在移动通信领域,即时通讯(Instant Messaging,简称IM)应用已经成为人们日常生活和工作中不可或缺的一部分。LumaQQ,作为一个著名的即时通讯软件,它的...

    安卓app开发项目-LumaQQ-Android qq 代码(源码).zip

    安卓app开发项目-LumaQQ-Android qq 代码(源码).zip安卓app开发项目-LumaQQ-Android qq 代码(源码).zip安卓app开发项目-LumaQQ-Android qq 代码(源码).zip安卓app开发项目-LumaQQ-Android qq 代码(源码).zip安卓app...

    LumaQQ.rar_LumaQQ_LumaQQ-Android_PortGateFacto

    【LumaQQ.rar_LumaQQ_LumaQQ-Android_PortGateFacto】是一个关于LumaQQ的源代码压缩包,LumaQQ是一款针对Android平台开发的即时通讯应用。这个压缩包包含了一些关键文件,如`www.pudn.com.txt`可能是发布者在某个...

    LumaQQ的android源码

    LumaQQ 的android源代码,提供源码分析,对大家学习android很有帮助!

    LumaQQ-Android.rar_android_android qq

    《LumaQQ for Android:深度解析Java编程在Android平台的应用》 LumaQQ-Android是一款专为Android平台设计的即时通讯应用源码,其核心技术基于Java语言,这为我们揭示了Java在移动开发中的强大功能和灵活性。在...

    LumaQQ-Android qq 代码.zip

    5. **权限管理**:分析LumaQQ的代码,可以学习到如何请求和管理Android应用的权限,例如访问网络、读写存储等。 6. **事件监听与回调机制**:Android应用中,事件监听和回调机制是关键。LumaQQ的代码将展示如何处理...

    LumaQQ-Android qq 代码.rar

    本篇将聚焦于"LumaQQ-Android qq 代码"这一开源项目,通过分析源码,深入探讨Android平台上QQ的开发细节和技术要点。 首先,LumaQQ是一款基于Android平台的QQ客户端仿制品,它由第三方开发者根据QQ的公开API和部分...

    LumaQQ.NET.rar_.net_LumaQQ-Android_LumaQQ.NET_NET-SNMP_TCP 发送图片

    【标题】"LumaQQ.NET.rar" 是一个包含.NET框架下的LumaQQ源代码的压缩文件,主要关注".NET"技术栈,特别是针对"LumaQQ-Android"的.NET版本实现,以及与"NET-SNMP"和"TCP发送图片"相关的功能。 【描述】这个描述指出...

    Android-LumaQQ-Android qq 代码.zip

    Android-LumaQQ-Android qq 代码.zip

    Android应用源码LumaQQ- qq 代码.zip

    本篇文章将对“LumaQQ-qq代码.zip”这个压缩包中的Android应用源码进行深度分析,帮助读者理解和学习Android应用开发的精髓。 一、Android应用的基本结构 在LumaQQ的源码中,我们可以看到典型的Android应用结构,...

Global site tag (gtag.js) - Google Analytics