欢迎来到天天文库
浏览记录
ID:40909506
大小:147.00 KB
页数:9页
时间:2019-08-10
《Android平台技术总结_孔喆》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Android平台的Service机制基于Android平台开发项目的个人技术总结Service是组成Android应用程序的四个重要组件(Activity,Service,Broadcastreceiver和Contentprovider)之一。顾名思义,它是为应用程序提供一种服务,他不需要显示画面,但却可以长时间在后台运行,最简单的例子就是MP3播放,检测SD卡中文件的变化等。Service与Activity的级别差不多,但是他无法自己启动,需要通过某Activity或者其他Context对象调用startServic
2、e()或bindService()方法进行启动。他的继承关系和主要的调用方法如下图。图1-1Service的类图及其主要方法接下来,本文将介绍Android平台Service机制的基本特性;Activity和Service之间的数据传递;然后介绍通过Service实现Android系统进程间通信的AIDL(AndroidInterfaceDefinedLanguage)方法;最后,通过几个代码示例,说明Service机制的具体使用方法。一、Service机制的基本特性1.Service在工程AndroidManifest文
3、件中的声明Service作为Android系统应用程序组件之一,其定义在AndroidManifest文件中的之内,其具体的定义语法如下:4、"false"]android:exported=["true"5、"false"]android:permission="string"6、android:process="string">其中,各属性功能如下表:表1-1Service的属性描述属性功能描述nameService类的名称。使用“包名.类名”的格式定义,例“com.android.neusoft.NetRadioService”。若在默认包内,则类使用“.类名”定义,例“.NetRadioService”。labelService的标签。iconService的图标。enabled系统是否可以实例化该Service。true:可实例化。注:若希望Service可以实例化必须将7、application和service的enabled属性均设置为true。exported其他应用程序的组件是否可以外部调用该Service。true:为允许外部调用。false:只有本应用程序内或者有相同的用户ID,可以使用该Service。permission人为设置的一个访问该Service的权限。如果没有该权限,startService,stopService和bindService将无法传递Intent操作Service。若Service未设置该属性,默认使用application的permission属性值。8、若Service和application均未设置该属性,则该Service没有任何的许可设置。processService将要运行的进程名称。一般来说,应用程序所有的组件都运行在应用程序的默认进程中,可以在application的process中对全部组件的进程进行设置,但也可以在Service组件中进行单独设置,使Service运行在其他的进程之中。如果process属性以“:”开头,说明该进程为该应用程序私有的,只有需要时会被创建;如果process属性以小写字母开头,将创建一个该名字命名的进程,允许不同的应用程序,共9、享使用该进程,减小资源的消耗。2.AndroidService类的常用API表1-2Service的基本API功能描述函数名称功能描述getApplication返回拥有该Service的应用程序。onBind返回Service的通信通道,如果没有返回成功,将返回null。返回的IBinder指针,将被用于AIDL进行使用的复杂接口。onConfigurationChanged当Service运行中,设备的设置发生变化时,系统将调用该函数。注:Service与Activity不同,当系统设置发生变化时,只调用该函数,而无需10、重新启动。onCreate系统第一次创建Service时候的将调用该函数。注:不要直接调用该函数。onDestroy系统调用,通知Service他将不再被使用并移除。调用该函数,主要完成对Service内使用资源的关闭回收工作。onLowMemory当系统内存资源低的时候,系统将调用该用该函数,来释放一
4、"false"]android:exported=["true"
5、"false"]android:permission="string"
6、android:process="string">其中,各属性功能如下表:表1-1Service的属性描述属性功能描述nameService类的名称。使用“包名.类名”的格式定义,例“com.android.neusoft.NetRadioService”。若在默认包内,则类使用“.类名”定义,例“.NetRadioService”。labelService的标签。iconService的图标。enabled系统是否可以实例化该Service。true:可实例化。注:若希望Service可以实例化必须将
7、application和service的enabled属性均设置为true。exported其他应用程序的组件是否可以外部调用该Service。true:为允许外部调用。false:只有本应用程序内或者有相同的用户ID,可以使用该Service。permission人为设置的一个访问该Service的权限。如果没有该权限,startService,stopService和bindService将无法传递Intent操作Service。若Service未设置该属性,默认使用application的permission属性值。
8、若Service和application均未设置该属性,则该Service没有任何的许可设置。processService将要运行的进程名称。一般来说,应用程序所有的组件都运行在应用程序的默认进程中,可以在application的process中对全部组件的进程进行设置,但也可以在Service组件中进行单独设置,使Service运行在其他的进程之中。如果process属性以“:”开头,说明该进程为该应用程序私有的,只有需要时会被创建;如果process属性以小写字母开头,将创建一个该名字命名的进程,允许不同的应用程序,共
9、享使用该进程,减小资源的消耗。2.AndroidService类的常用API表1-2Service的基本API功能描述函数名称功能描述getApplication返回拥有该Service的应用程序。onBind返回Service的通信通道,如果没有返回成功,将返回null。返回的IBinder指针,将被用于AIDL进行使用的复杂接口。onConfigurationChanged当Service运行中,设备的设置发生变化时,系统将调用该函数。注:Service与Activity不同,当系统设置发生变化时,只调用该函数,而无需
10、重新启动。onCreate系统第一次创建Service时候的将调用该函数。注:不要直接调用该函数。onDestroy系统调用,通知Service他将不再被使用并移除。调用该函数,主要完成对Service内使用资源的关闭回收工作。onLowMemory当系统内存资源低的时候,系统将调用该用该函数,来释放一
此文档下载收益归作者所有