WEB开发网
开发学院手机开发Android 开发 Android 运行后台服务的生命周期与使用技巧 阅读

Android 运行后台服务的生命周期与使用技巧

 2010-03-07 19:35:00 来源:WEB开发网   
核心提示:作为一款多任务操作系统,如果不能运行后台服务,Android 运行后台服务的生命周期与使用技巧,显然说不过去,Android 当然提供了运行后台程序的方法,我们来讨论一下在具体使用服务时候会碰上一些问题,以及探讨一下解决的办法,而且非常简单易用,只不过有一些小问题需要注意

作为一款多任务操作系统,如果不能运行后台服务,显然说不过去,Android 当然提供了运行后台程序的方法。而且非常简单易用,只不过有一些小问题需要注意,这个主题分为两部分,第一部分是如何实现一个Service以及他的生命周期,第二部分是对于一个个后台服务应该注意的事项。我们开始吧!

创建服务类

所谓的服务,在Android里被称做 Service,只要继承 android.app.Service 这个抽象类,并且实现其中几个方法就可以了。

view plaincopy to clipboardprint?

public class RoidingService extends android.app.Service {}

public class RoidingService extends android.app.Service {}

里边必须实现的一个方法是 onBind(Intent intent) ,他具体是做什么的我们下边讲。还有两个重要的回调函数需要覆盖,onCreate() 和 onDestroy()。跟 Actitivty 类似,在创建和销毁 Service 时回调这两个函数,达到初始化或退出前保存状态。

服务的生命周期

有了 Service 类我们如何启动他呢,有两种方法:

Context.startService()

Context.bindService()

在同一个应用任何地方调用 startService() 方法就能启动 Service 了,然后系统会回调 Service 类的 onCreate() 以及 onStart() 方法。这样启动的 Service 会一直运行在后台,直到 Context.stopService() 或者 selfStop() 方法被调用。另外如果一个 Service 已经被启动,其他代码再试图调用 startService() 方法,是不会执行 onCreate() 的,但会重新执行一次 onStart() 。

另外一种 bindService() 方法的意思是,把这个 Service 和调用 Service 的客户类绑起来,如果调用这个客户类被销毁,Service 也会被销毁。用这个方法的一个好处是,bindService() 方法执行后 Service 会回调上边提到的 onBind() 方发,你可以从这里返回一个实现了 IBind 接口的类,在客户端操作这个类就能和这个服务通信了,比如得到 Service 运行的状态或其他操作。如果 Service 还没有运行,使用这个方法启动 Service 就会 onCreate() 方法而不会调用 onStart()。

接着前一部分,我们来讨论一下在具体使用服务时候会碰上一些问题,以及探讨一下解决的办法。

与 Service 通信并且让它持续运行

如果我们想保持和 Service 的通信,又不想让 Service 随着 Activity 退出而退出呢?你可以先 startService()

1 2 3  下一页

Tags:Android 运行 后台

编辑录入:coldstar [复制链接] [打 印]
赞助商链接