Android Service---创建一个被启动类型的服务

一个启动类型的服务是另一个组件通过调用startService()方法,产生一个调用服务的onStartCommand()方法而启动的服务。

当一个服务被启动时,它有一个独立与启动它的组件的生命周期,并且这个服务能够无限期的在后台运行,即使启动它的组件被销毁了。因此这个服务应该在工作结束时通过调用stopSelf()方法来终止自己,或者另一个组件通过调用stopService()方法也能终止这个服务。

像Activity这样的应用程序组件能够通过调用startService()方法来启动服务,并且给指定的服务传递一个Intent对象,同时包含一些服务所使用的数据。服务在onStartCommand()方法中接受这个Intent对象。

例如,假设一个Activity需要把一些数据保存到在线数据库中。这个Activity就能启动一个服务,并且把要保存的数据通过一个Intent对象传递给startService()方法。这个服务在onStartCommand()方法中接受这个Intent对象,连接到互联网,并且执行数据库事务。当事务结束,这个服务就自己终止并销毁。

警告:服务运行在与声明它的应用程序相同的进程中,并且是在应用程序的主线程中。默认情况下,如果你的服务要执行密集或阻塞操作,而用户又要跟同一个应用程序的一个Activity进行交互,那么这个服务就会降低Activity的性能。要避免影响应用程序的性能,你应该在服务的内部启动一个新的线程。

通常,你能够继承两个类来创建被启动类型的服务:

Service

这是所有服务的基类。当你继承这个类时,重要的是你要给所有的服务工作创建一个新的线程,因为服务要使用你的应用程序的主线程,默认情况可能降低应用程序正在运行的Activity的性能。

IntentService

这是一个Service类的子类,它使用工作线程来依次处理所有的启动请求,如果你不想要服务同时处理多个请求,那么这是最好的选择。需要你做的所有工作就是实现onHandleIntent()方法,它接受每个启动请求的Intent对象,以便完成后台工作。

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

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

你可能感兴趣的:(android)