服务
接着上一讲的内容,咱们继续来唠叨概念性的东西。服务,内容提供器,广播接收器等理论知识。
首先是服务,它不是一个可视化的组件或者视图。他是由我们开发人员来定义,可以一直一直运行
的工作单元。跟活动的差别在于:它没有可视化组件,它的运行不会依赖于应用程序用户。
服务用来做什么的呢?我们第一反应应该会是这个;让我们慢慢来解开她的衣服探索一下。
我们平时听歌的时候,玩手机QQ。或者UC在下载的时候,下载完成之后会有一个提示。这样类似的
种种任务都可以作为一个服务来运行。它是我们看不到的,比较抽象,但是在平时的手机应用程序中
我们却经常可以感受到它的身影,再举个例子,比如闹钟到点了自动会触发手机音乐响起。这也是服务
的一种使用。服务也可以在我个人理解来看相当于一种定时任务一样一样的。
服务在另一种理解上看,它的作用可以将它想象成一个后台服务。他不能和其他的应用程序组件相比。
换句话说,服务就是安卓的主要劳动力。通过使用服务,比如有的任务需要请求资源,请求网络,服务
就可以来将任务进行排队。服务同时也是对其他应用程序公开任务的一种方法,方便这些应用程序可以跟
特定的工作进行交互。服务也是处理一个重复或者正在进行的任务非常好的办法。典型的有发送邮件程序等。
服务的使用一定要另外申明一个线程,不要使用主线程,使得画面不够流畅。以后在继续深入服务。
内容提供器
接下来讲内容提供器。
首先,他是很多程序共享数据首要选取的方法。可以把它认为一种大家一起使用的公共的数据储存类型。它可以
让开发人员公开一些需要被查询的数据或者被一些程序使用特定的数据集。安卓程序没有很好的数据存储机制,因此
内容提供器是创建通用数据池很好的方法。
内容提供器所具备的灵活性可以让开发人员针对数据的不同子集定义一个或多个数据集。它可以满足你所指定的安全标准
的应用程序共享其他相关数据。此外,内容提供器还可以实现对每个数据集不同的操作。比如一些数据的只读,或者
写入数据等操作。这些数据被公开,它的优势在于用户可以选择希望的应用程序来管理他们的数据,而不必一定适用本机的
应用程序。
内容提供器包括:常见的AlarmClock,Brower,CallLog,ContactsContract,MediaStore,Settings,UserDictionary.
他们分别是,提供对系统报警始终这个程序的访问权限,从而允许不同的应用程序设置报警时间和模式,比如振铃等。
第二个是类似一个搜索功能,第三个是查看手机联系人数据,甚至可以修改,第四个是安卓上通用的媒体文件程序访问。
第五个是安卓的全局设置功能,最后一个是用户自定义数据单词,并进行存储。
在Android.Provider的命名控件的安卓文档中可以找到所用的默认内容提供器列表。
在我们学习内容提供器的时候,我们需要学习并记住的是它的工作方式。
不论是系统提供的还是自己创建的提供器,并不是通过直接访问内容提供器来实现访问的。
安卓平台通过利用一个中介对象来统一的当前和将来的所有访问,而不是为访问方法提供N个不同的内容提供器。
换种说法,ContentResolver对象是负责处理与内容提供器交互的,他是一个可以充当数据存储的中介。这个方法
简化了内容提供器中数据的使用,这里可以确保内容提供器都是平等的。
这里就有另外一种概念了,内容解析器。内容解析器需要遵守两个基本规则。
所有的内容存储都需要有一个唯一的URI,它提供了查找所需要访问的内容提供器唯一方法,这个URI还可以带上参数
当作条件来查询特定的数据集。
第二个规则是基类ContentProvider定义了可实现的内容提供器上执行所有的可能的操作。在自己编写自定义提供器时,
由我们自己来定义提供器的逻辑,即确认需要写什么方法。这种方法的优势在于你知道如何链接上一个提供器,那就可以
连接到任何提供器上,但是缺点在于没有权限编写自己的访问方法。不过ContentProvider具备了修补该缺点存在。
contentResolver有五个常用的五个函数。Query(),update(),insert(),delete(),getType().
第一个方法接受针对提供器URI,选择字符串,选择参数以及结果排序顺序的参数,用来返回目标结果集的指针。
update()接受针对提供器的URI,新字段的值,以及具体更新的行过滤器的参数,返回Update()语句影响的行数。
insert()接受针对提供器的URI,选择字符串,选择参数的参数。该函数返回新插入项的URI
delete()接受针对提供器的URI,选择字符串,选择参数的参数。该函数返回影响的行数
getType()接受针对提供器URI的参数,该函数返回内容提供器中存储的数据文本的MIME类型。(MIME类型就是文件的后缀扩展名)
内容提供器主要了解他的工作方式以及记住使用的几个函数即可,后续篇章继续深入。
广播接收器
接下来讲最后一个广播接收器,说的很直白点,广播接收器就类似我们监控系统。通过监听事件做出相应的程序组件。
广播播放器可以对特定的事件进行监听,如果必要,还可以在响应的时候启动活动和服务。他跟服务有一定的相似之处。他们
没有任何用户界面。其次,都是用于完成任务。而不同之处在于广播用来监听消息类型,并针对启动适当的相应。
接下来介绍比较重要的概念,组建之间的通讯:安卓意图(android意图)
这是用来安卓应用程序组件之间的交互,通过使用意图可以启动新任务或者新活动来交互。
可以通过意图来初始化一个新服务,或者对一个进行中的服务传递数据实现交互。
还可以通过意图来充当消息广播的中介实现来进行交互。
意图是对完成某项任务所需要的细节的抽象。一个意图可以存储多个信息块-接受对方组件执行的指令。
如果一旦接受到一个意图,则由该接收器来确定如何相应,如何利用意图中的数据来完成接下来的操作。
还有一个重要的概念是绑定组件,名为安卓清单。他就是类似winform里面的aapconfig以及webform里面的
web.config文件。它是用来控制程序的一些权限,或者设置唯一软件包的名称,最低版本的sdk。应用程序主题,
以及程序版本。
该文件通过规定那些意图消息与某个程序组件绑定来描述该组件的功能。
还可以定义应用程序必须操作的其他代码库。
今天的内容就到这里了,比较枯燥无味。下一将开始将要讲解一些ui控件。尽请期待...
未经本人同意,不得转载...否则后果自负。-高卿 QQ1466358067