(android实战)Service 生命周期和使用注意项

一.基础知识

服务一般分为两种:

1:本地服务, Local Service 用于应用程序内部。在Service可以调用Context.startService()启动,调用Context.stopService()结束。 在内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次 stopService()来停止。

2:远程服务, Remote Service 用于android系统内部的应用程序之间。可以定义接口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通过那个连接来调用服 务。调用Context.bindService()方法建立连接,并启动,以调用 Context.unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加 载它。
提供给可被其他应用复用,比如定义一个天气预报服务,提供与其他应用调用即可。

那么先来看Service的生命周期吧:如图:

 

context.startService() ->onCreate()- >onStartCommand()->Service running--调用context.stopService() ->onDestroy()

context.bindService()->onCreate()->onBind()->Service running--调用>onUnbind() -> onDestroy() 从上诉可以知道分别对应本地的,,以及远程的,也对应不同的方式启动这个服务。

 

 

二.注意事项

2.1  同一服务,多次启动,服务实际执行的过程

第一次 启动服务时,运行 onCreate -->onStartCommand

后面在启动服务时,服务只执行onStartCommand

在实际使用过程中,通过Intent 传递数据,在OnStartCommand中执行。

 

 

转载于:https://www.cnblogs.com/macroxu-1982/archive/2012/12/18/2823183.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、付费专栏及课程。

余额充值