像Activity(和其他的组件)一样,所有的服务都必须在应用程序的清单文件中声明。

要声明服务就要给<application>元素添加一个<service>子元素,例如:

<manifest ... >  ...  <application ... >      <service android:name=".ExampleService" />      ...  </application></manifest>

在<service>元素中还包括了一些其他的属性定义,如启动服务所需的许可和服务应该运行在哪个进程中。android:name属性是唯一必须的属性---它指定了这个服务的类名。一旦你发布了应用,就不应该改变这个名字,因为如果修改了,就会中断那些使用Intent引用这个服务的功能。

关于在清单文件中声明服务的更多信息,请参考<service>元素的说明。

就像Activity一样,一个服务也能够定义Intent过滤器,允许其他组件使用隐含的Intent来调用这个服务。通过声明Intent过滤器,安装在用户设备上的任何应用程序组件都能启动你的服务(如果你的服务声明了一个跟另一个应用程序传递给startService()方法的Intent匹配的Intent过滤器)。

如果你计划你的服务只在局部使用(其它的应用程序不使用它),那么你就不需要提供任何Intent过滤器(并且也不应该提供)。没有任何Intent过滤器,你就必须使用一个确切的命名服务类的Intent来启动这个服务。关于启动服务的更多信息会在“启动服务”一节中讨论。

另外,如果你在<service>元素中包含了android:exported属性,并且属性值设置为“false”,那么就能确保这个服务是你的应用的私有服务了。即使这个服务支持Intent过滤器,这也是有效的。

注:本人转载系个人觉得翻译的很好,值得收藏,且自己回头看着方便。

如有兴趣请访问作者官方博客http://blog.csdn.net/FireOfStar

更多相关文章

  1. Android 属性动画(Property Animation) 完全解析 (上)
  2. EditText属性详解
  3. android自定义视图属性(atts.xml,TypedArray)学习
  4. Android——属性动画(Property Animation)

随机推荐

  1. 第15天(就业班) 课程回顾、mysql安装、管
  2. Mysql 创建,授权,删除,修改用户
  3. 创业团队为什么要选择Oracle而不是MySQL?
  4. MySQL 的COUNT(x)性能怎么样?
  5. 在CMD查看Mysql数据时出现中文乱码
  6. 一个mysql数据库的问题啊,我都摸索两天了
  7. 用delphi5修改sql server2000出现“键列
  8. MySQL存储引擎中的MyISAM和InnoDB
  9. 在C#中运用 SQLite
  10. 关与批处理的问题 一个批处理调用SQLplus