Android 服务 Service

Service是一个可以在后台运行,不提供用户界面的组件。

两种形式:

启动

应用组件(如activity)通过调用startService()启动服务。该方法启动后的service即可在后台无限期的运行,及时启动它的组件被销毁也不受影响。启动的服务通常是执行单一的操作,并且不会将结果返回给调用方。

context.startService()-->onCreat()-->onStartCommand()-->Service running-->调用context.stopService(),或者stopSelf()-->onDestory()

绑定

应用组件通过调用bindService()绑定服务。该方法提供了一个客户端-服务器接口,允许组件与服务进行交互、发送请求、获取结果,甚至利用进程间通信(IPC)跨进程执行这些操作。这种服务只有在另一个组件绑定时,才会运行。多个组件可以同时绑定到该服务,但全部取消绑定后,该服务才会被销毁。

context.bindService()-->onCreat()-->onBind()-->Service running-->调用unBind()-->onDestory()

注意:

服务在其托管进程的主线程中运行,它既不创建自己的线程,也不在单独的进程中运行(除非另指定),如果服务想要执行CPU耗时操作,则应在服务内创建新线程完成这些工作,避免ANR

onStartCommand()方法返回值必须是以下常量:

START_NOT_STICKY:如果系统在onStartCommand()返回终止服务,除非有挂起Intent要传递,否则系统不会重建服务,可以避免在不必要时以及应用能够轻松重启所有未完成的作业时运行服务。

START_STICKY:如果系统在onStartCommand()返回终止服务,则会重建服务并调用onStartCommand(),但不会重新传递最后一个Intent。相反,除非有挂起Intent要启动服务(在这种情况下,将传递这些Intent),否则系统会通过空Intent调用onStartCommand()。这适用于不执行命令,但无限期运行并等待作业如媒体播放器或类似服务。

START_REDELIVER_INTENT:如果系统在onStartCommand()返回后终止服务,则会重建服务,并通过传递给服务的最后一个Intent调用onStartCommand()。适用于主动执行应该立即恢复的作业如下载文件或类似服务。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值