第四章 Android开发三大基石—Activity、Service和Handler(4)

4.2 千变万化的服务-Service开发

Service是Android系统中运行在后台、不和用户交互应用组件。它和Activity的级别差不多,只能在后台运行。每个Service必须在manifest文件中 通过<service>来声明。

4.2.1 Service的生命周期

Service的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service的时候,先后调用onCreate()、onStart()这两个方法,当停止Service的时候,则执行onDestroy()方法,这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会再执行onCreate()方法,而是直接执行onStart()方法。Service的启动有StartService和BindService两种方法,这两种方法对Service生命周期的影响是不一样的。

下面,我们分别来看看这两种方法是如何影响Service生命周期的:

1)  StartService启动Service

用这种方法启动Service,Service会经历 onCreate 然后是onStart,接着一直处于运行状态,直到stopService的时候调用onDestroy方法。如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。

2)  BindService启动Service

通过这种方法启动Service,Service会运行onCreate,然后是调用onBind, 这个时候调用者和Service绑定在一起。调用者退出了,Srevice就会调用onUnbind->onDestroyed方法。所谓绑定在一起就共存亡了。调用者也可以通过调用unbindService方法来停止服务,这时候Srevice就会调用onUnbindonUnbind->onDestroyed方法。

4.2.2 Service的启动和停止

我们已经对Service的生命周期有了一定的了解,Service的启动方式不同,它的生命周期也不相同。下面,就让我们来看看Service到底是如何启动和停止的。

服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。这两个方法都可以启动Service,但是它们的使用场合有所不同。

1)使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。

    如果打算采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。

如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStar

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值