Android Studio 学习记录-操作后台服务

本文详细介绍了Android中的Service,包括启动和停止服务、绑定与解绑服务的生命周期以及活动与服务之间的交互。重点阐述了onStartCommand、onBind、onUnbind等关键方法的作用,并展示了如何创建和管理服务。
摘要由CSDN通过智能技术生成

目录

服务的启动和停止

服务的绑定与解绑

活动与服务之间的交互


        本文介绍了Android四大组件之一Service的基本概念和常见用法。包括服务的生命周期及其两种启停方式——普通方式和绑定方式(含立即绑定和延迟绑定),还介绍了如何在活动和服务之间交互数据。

服务的启动和停止

        既然Android自带了系统服务,App也可以拥有自己的服务。Service与Activity相比,不同之处在于没有对应的页面,相同之处在于都有生命周期。想要用好服务,就要弄清楚它的生命周期。

Service与生命周期有关的说明如下:

  • onCreate:创建服务。
  • onStart:开始服务,Android 2.0以下版本使用,现已废弃。
  • onStartCommand:开始服务,Android 2.0及以上版本使用。该方法的返回值说明见表
服务启动的返回值说明
返回值类型 返回值说明
START_STICKY 黏性的服务。如果服务进程被杀掉,就保留服务的状态为开始状态,但不保留传送的Intent对象。随后系统尝试重新创建服务,由于服务状态为开始状态,因此创建服务后一定会调用onStartCommand方法。如果在此期间没有任何启动命令传送给服务器,参数Intent就为空值
START_NOT_STICKY 非黏性服务。使用这个返回值时,如果服务被异常杀掉,系统就不会自动重启该服务
START_REDELIEVER_INTENT 重传Intent的服务。使用这个返回值时,如果服务被异常杀掉,系统就会自动重启该服务,并传入Intent的原值
START_STICKY_COMPATIBILITY START_STICKY的兼容版本,但不保证服务被杀掉后一定能重启
  • onDestroy:销毁服务。
  • onBind:绑定服务。
  • onUnbind:解除绑定。返回值为true表示允许再次绑定,之后在绑定服务时,不会调用onBind方法而是调用onRebind方法;返回值为false表示只能绑定一次,不能再次绑定。
  • onRebind:重新绑定。只有上次的onUnbind方法返回true时,再次绑定服务才会调用onRebind方法。

        服务的生命周期也存在好几个环节,除了必须的onCreate方法和onDestroy方法,还有其他几种生命周期方法。接下来已普通启停为例,讲解服务的生命周期过程。

        首先在Java代码包下面创建名为service的新包,右击该包并在右键菜单中依次选择New→Service→Service,弹出下示服务创建对话框。

        在服务创建对话框的Class Name一栏填写服务名称,比如NormalService ,再点击Finish按钮,Android Studio便自动再service包下生成NormalService .java,同时在AndroidManifest.xml的application节点内部添加如下的服务注册配置:

        <service
            android:name=".service.NormalService"
            android:enabled="true"
            android:exported="true" />

        打开NormalService .java,为了方便观察服务的生命周期过程,需要重写该服务的所有周期方法,给每个方法都打印相应的运行日志。

public class NormalService extends Service {
    pr
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值