Android中Service的基本理解和使用

一、什么是Service?

ServiceAndroid四大组键之一,是运行在后台的一段代码。它可以运行在它自己的进程,也可以运行在其他应用程序进程的上下文(Context)里面,这取决于自身的需要。其它的组件可以绑定到一个服务(Service)上面,通过远程过程调用(RPC)来调用这个方法。

举个例子:
例如媒体播放器的服务,当用户退出媒体选择用户界面,仍然希望音乐依然可以继续播放,这时就是由服务(service)来保证当用户界面关闭时音乐继续播放的。

二、如何使用Service

1,创建一个MyService类并且继承与Service类,并且实现onBind()方法
2,在AndroidManifest.xml中注册Service
<service android:name="com.lsn.MyService">
3,通过Context启动Service

//第一种使用StartService的方式 参数是一个指向服务的意图
startService(Intent service);
生命周期:context.startService()  -> onCreate()  -> onStart()  -> Service running  -> context.stopService()  -> onDestroy()  -> Service stop 
//第二种使用绑定的方式
bindService();
生命周期:context.bindService()  -> onCreate()  -> onBind()  -> Service running  -> onUnbind()  -> onDestroy()  -> Service stop
  • Service已经启动之后,调用bindService()时候,则执行onCreate()方法;如果调用unBindService()时候,则执行onUnbind()方法
  • 只有调用startService,才会执行onStart()方法;startService()之后,只有点击stopService(),调用onDestory()方法(调用unbind()方法并不能关闭程序)
    4,关闭Service
//通过context关闭
context.stopService()  
  • 如果使用 bindService() 方法启动的,Context退出了,Srevice就会调用onUnbind()->onDestroy()相应退出。

  • 使用unBindService()方法也可关闭Service,执行onDestroy()方法

三、onStartCommand()的返回值

  • START_STICKY:如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。
  • START_NOT_STICKY:“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务

  • START_REDELIVER_INTENT:重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。

  • START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保证服务被kill后一定能重启。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值