Android PK Qt:应用程序组件和API
Android架构的一个主要概念是组件复用(component reuse)。这样便于发布活动、服务和数据,并与其他应用程序共享活动、服务和数据。Android有四个基本的组件,每个组件有着特定的目的。基于Android开发的软件多少会用到下列应用服务。
Activity Manager:该服务控制着任何活动的生命周期,包括活动堆栈的管理。活动为用户的交互提供了一种接口。这是Android应用程序的基本构建模块,负责创建窗口。所有活动都是android.app.Activity的子类,其中用户界面的元素通过setContentView(View)来设定。视图用于用户界面的构建。
Services:Service组件在后台运行,基本上是为了执行冗长的操作或远程进程。它们没有用户界面,作为android.app.Service的子类来实现。(51CTO视频专题:Android组件-Service)
Content Providers:这种组件充当共享数据的存储库,无论共享数据是文件系统、SQLite数据库还是其他持久性存储位置。Content providers作为android.content.ContentProvider的子类来实现。
Broadcast Receivers:电池电量很少、屏幕被关闭时,该组件充当响应系统广播通知的角色。它作为android.content.BroadcastReceiver的子类来实现。
Android应用程序始于Activity实例。这个代码片段演示了基本理念。
packageorg.mypackage.mynamespace;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.widget.TextView;
publicclassAndroidproj2ActivityextendsActivity {
@Override
publicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView=newTextView(this);
textView.setText("Hello World");
setContentView(textView);
}
}
Qt用不同的方式来处理Android针对活动所作的处理。它使用了几个组件,比如域类或状态机来跟踪组件状态。如果使用之前版本的Qt,在创建用户界面时,你就得使用窗口组件,或者在QGraphicsView上构建屏幕。结果是用户体验很差劲,在触摸屏手机上更是差劲。但是随着Qt Mobility和Qt Quick的发布,用Qt移动平台来开发应用程序变得更切实际了。
Qt Mobillity API框架提供了一系列广泛的功能和技术,包括如下:
Bearer Management:该API控制着系统的连接状态、管理可用网络连接以及使用最佳的可用连接。
Contacts:该API让客户机能够请求来自本地和远地的联系人数据。
Location:该API用于接收来自任意数据源的位置数据。
Messaging:该API用于发送和接收多种类型的消息,如短信和电子邮件。
Multimedia:该API有助于播放和录制媒体,并管理媒体内容的组合。
Publish和Subscribe:该API用于共享应用程序之间的上下文信息和读取项目值、浏览项目值以及订阅变更通知。
Service Framework:该API用于发现任意服务,并为任意服务创建实例。
System Info:该API用于发现与系统有关的信息和能力。
Qt Quick为使用QML语言,以声明式方式建立对象树提供了一种机制。QtDeclarative C++模块将QML与C++对象集成起来。开发者可以构建对智能手机及其他设备来说很常见的流畅的用户界面。查看该列表,即可看到Qt Quick的所有组件。
这个Qt Quick代码片段让你可以大致了解脚本是什么样子:
import Qt 4.7
Rectangle {
Width : 270
Height : 170
Text {
anchors . horizontalCentre : parent . horizontalCenter
anchors . verticalCenter : parent . verticalCenter
text : "Hello World"
}
}
Qt移动平台的基本起始点是main方法。下面是一个基于窗口组件的移动应用程序的示例起始点:
#include "mainwindow.h"
#include
intmain(intargc,char*argv[])
{
QApplication app(argc, argv);
MainWindow mainWindow;
mainWindow.setOrientation(MainWindow::ScreenOrientationAuto);
mainWindow.showExpanded();
returnapp.exec();
}
Android VS Qt:移动开发者眼里谁更强?
Android(设备数量为王,Android将独步天下)
Qt(跨平台框架,应用用C++开发,Geek的最爱)