Android Service的生命周期

  
摘要: Service生命周期一般有两种使用方式Service可以被启动或者允许被启动直到有人停止了它或者它自己停止了。在这种模式下,它通过Context.startService()方法开始,通过Context.stopService()方法停止。它可以通过Servi ...

Service生命周期一般有两种使用方式

Service可以被启动或者允许被启动直到有人停止了它或者它自己停止了。在这种模式下,它通过Context.startService()方法开始,通过Context.stopService()方法停止。它可以通过Service.stopSelf()方法或者Service.stopSelfResult()方法来停止自己。只要调用一次stopService()方法便可以停止服务,无论调用了多少次的启动服务方法。

Service可以通过定义好的接口来编程,客户端建立一个与Service的链接,并使用此链接与Service进行通话。通过Context.bindService()方法来绑定服务,Context.unbindService()方法来关闭服务。多个客户端可以绑定同一个服务。如果Service还未被启动,bindService()方法可以启动服务。

这两种模式是完全独立的。你可以绑定一个已经通过startService()方法启动的服务。例如:一个后台播放音乐服务可以通过startService()和一个intend对象来播放音乐。可能用户在播放过程中要执行一些操作比如获取歌曲的一些信息,此时activity可以通过调用bindServices()方法与Service建立连接。这种情况下,stopServices()方法实际上不会停止服务,直到最后一次绑定关闭。

像一个activity那样,一个Service有些可以用来改变状态的生命周期方法。但是比activity的方法少,Service生命周期方法只有三个,而且都是public修饰。

void onCreate()

void onStart(Intent intent)

void onDestroy()

通过实现这三个生命周期方法,你可以监听Service的两个嵌套循环的生命周期。

Service整个生命周期

Service的整个生命周期是在onCreate()onDestroy()方法之间。和activity一样,在onCreate()方法里初始化,在onDestroy()方法里释放资源。例如,一个背景音乐播放服务可以在onCreate()方法里播放,在onDestroy()方法里停止。

Service活动的生命周期

Service的活动生命周期是在onStart()之后,这个方法会处理通过startServices()方法传递来的Intent对象。音乐Service可以通过开打intent对象来找到要播放的音乐,然后开始后台播放。

Service停止时没有相应的回调方法,即没有onStop()方法。onCreate()方法和onDestroy()方法是针对所有的Services,无论它们是否启动。通过Context.startService()Context.bindService()方法。然而,只有通过startService()方法启动的Service才会被调用onStart()方法。如果一个Service允许别人绑定,那么需要实现以下额外的方法:

IBinder onBind(Intent intent)

boolean onUnbind(Intent intent)

void onRebind(Intent intent)

onBind()回调方法会继续传递通过bindService()传递来的intent对像。onUnbind()会处理传递给unbindService()intent对象。如果Service允许绑定,onBind()会返回客户端与服务互相联系的通信频道。如果建立了一个新的客户端与服务的链接,onUnbind()方法可以请求调用onRebind()方法。

下面的图表介绍了Service的回调方法,然而,它把通过startService()方法建立的服务从通过bindService()方法建立的服务分离开。记住任何服务,无果它怎样建立,都默认客户端可以链接,所以任何的Service能够接收onBind()和onUnbind()方法。 

http://www.189works.com/article-56218-1.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Service生命周期包括四个方法: onCreate()、onStartCommand()、onDestroy() 和 onBind()。 - onCreate():在 Service 第一次被创建时调用,一般用于进行初始化操作。 - onStartCommand():在 Service 每次被启动时调用。 - onDestroy():在 Service 被销毁前调用,一般用于清理资源。 - onBind():在 Service 被绑定时调用,返回 IBinder 对象。 ### 回答2: Android Service是一种应用程序组件,用于在后台执行长时间运行的操作,例如网络传输、音乐播放、联网同步等。在Android系统中,Service有着独特的生命周期,其与Activity的生命周期不同,需特别关注。 Service生命周期总共包括4个阶段:创建、启动、运行和销毁。具体的生命周期如下: 1.创建:当你创建一个新的Service对象时,系统会自动调用onCreate()方法。同样的,onCreate()是Service生命周期中最先被调用的方法。 2.启动:要使Service能够运行,必须先将其启动。Service可以通过两种方式启动:startService()和bindService()。startService()方法会使Service在后台运行并且不会绑定到调用者上。而bindService()方法则会绑定Service到调用者上,使得调用者可以与Service交互。 3.运行:当Service被启动或绑定后,系统会自动调用其onStartCommand()方法,接着Service即进入运行状态。在Service运行时,我们可以执行某些操作,例如下载文件、上传数据、播放音乐等。此外,如果我们想主动停止Service,也可以调用其stopSelf()或者stopService()方法。 4.销毁:Service生命周期中的最后一个阶段是销毁。当Service不再被需要时,系统会自动调用其onDestroy()方法,释放其所占用的资源。 需要注意的是,onStartCommand()方法是Service生命周期中最重要的方法,因为它在Service运行时被频繁调用。而onCreate()和onDestroy()方法在Service启动和销毁时仅被调用一次。此外,与Activity不同的是,Service可以在后台运行,且在没有用户界面的情况下仍可以正常工作。 总之,Android Service生命周期中的各个阶段是紧密相连的,并且需要开发者合理地运用Service生命周期,使其能够正常工作,达到我们所需的功能。 ### 回答3: Android ServiceAndroid 平台提供的一种用于执行后台任务的组件,它是一种没有界面的组件,可以在应用程序启动后在后台一直运行。Android Service 生命周期包含以下几个方法: 1. onCreate():当 Service 被创建时调用。只会在 Service 的整个生命周期中被调用一次,用于进行一些初始化操作。 2. onStartCommand():当 Service 被启动时调用。可以执行一些耗时的操作,并将结果返回给启动 Service 的组件。这个方法可以被调用多次,因为 Service 可能会被多次启动。 3. onBind():当组件要绑定到 Service 时调用。通过这个方法可以返回一个 IBinder 对象,用于与 Service 进行交互。 4. onUnbind():当组件和 Service 解除绑定时调用。可以用于释放一些资源或做一些清理工作。 5. onDestroy():当 Service 被销毁时调用。用于释放所有资源,包括线程、注册的 BroadcastReceiver 等。 Android Service 生命周期包含四个状态:Created、Started、Bound 和 Destroyed。在 Service 启动后,会先进入 Created 状态,然后根据具体情况进入 Started 或 Bound 状态,最后在执行完任务后进入 Destroyed 状态。 需要注意的是,当 Service 被启动后,它会一直在后台运行,直到手动停止或系统资源不足时才会自动停止。因此,开发者在编写 Service 时需注意,避免 Service 在后台长时间占用系统资源,影响用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值