Android和Qt-Extended在设计方法上的共通之处

本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息、原文链接、原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途。 谢谢合作。

原文链接:Android和Qt-Extended在设计方法上的共通之处

目前Qt-Extended停止开发,但是Nokia准备开发新的Qt-Mobility作为其替代工具,相信Qt-Extended中很多优秀的设计理念还是会被继承下来。期待在Qt在Nokia中会有更好的表现

Android和Qt-Extended作为新型的手机开发平台,都致力于将开发者将注意力集中于软件功能的实现,而不用花很大的精力在系统资源的管理上。这是和symbian平台最大的区别,设计symbian的那个年代,内存/cpu都是稀缺资源,所以要求开发者不仅要设计软件架构,还要随时准备处理内存不够的情况。随着硬件性能的大力提升,Nokia有意于将Qt替代symbian,也算是顺势而为。

Android和Qt-Extended虽然都用了一些不同的术语去描诉这些设计方法,但在本质上是相通的,那么我们来看一看他们的对应关系。

应用配置文件 AndroidManifest.xml VS appname.desktop
虽然Android里不再将一个运行的程序叫应用,叫activity,不过用应用来理解应该问题也不大。 AndroidManifest.xml是用于该应用怎么启动,以及对应的资源管理等。而Qt-extended里是用appname.desktop完成相应的功能,appname根据应用名不同而不同。应用启动的Launcher正是通过.desktop文件找到对应的二进制代码进而启动进程的。

外部服务接口 IntentFilter VS Service
外部服务的接口实现如下功能,比如当前页面里看到一个音频文件的链接,在用户点击链接的时候,会调用外部服务程序去实现该功能,但是当前应用的设计者是不知道系统的哪一个应用来完成这个功能的,只能发出一个类似播放音频这样的请求,由系统决定由哪个应用来执行这个播放功能,这样设计的好处是系统的组件能够更容易被替换。Android中用Intent和IntentFilter来实现该功能。而Qt-Extended用Service来实现。

应用生命周期 activity manager VS MemoryManager
在内存空间不够的情况下,系统要求做出反应关闭一些不需要的应用。Android 利用Activity 管理器根据acitivity 的不同状态决定关闭哪些应用。而Qt-Extended则是利用启动服务进程里的MemoryManager来监视内存状态,进行应用管理的。

后台应用 Service VS QCop 消息
后台应用指的是根据系统需要运行一些不需要GUI的应用,比如网络下载,音乐播放什么的。Android通过启动Service完成这个功能,而Qt-Extended则可以通过QCop向系统发出启动某个引用的请求,比如拨号,下载等。

广播服务 BroadcastReceiver VS RegisterQCopChannel
广播服务是指系统发生某种状态变化时希望大部分应用做出对应响应时而使用的广播动作。比如电池电量低,外部设备如usb等接入时。Android使用BroadcastReceiver去接收系统通知,进而由其他activity或者service做出具体响应。Qt-Extended的设计则有一点不一样,在外部状态发生变化时,会向系统的某一qcop 通道发送消息,如果对该通道上的消息感兴趣,则可以在该通道上注册侦听,能够及时对此做出响应。

本文是基于平台框架上的一个对比,主要是Android VS Qt-extended 。而针对基本软件代码上的设计不同,比如视图数据模式,观察者模式等,则可以期待下一篇文章 Android VS Qt.

posted on 2011-03-18 14:08  katago  阅读(805)  评论(0编辑  收藏  举报