Service

Service

  • 注意事项:
    • Service 执行耗时操作,提示ANR错误
  • Service的声明
    • 属性
      • android:enabled
        • 服务能否被实例化,默认true
      • android:exported
        • 其他应用组件能否调用服务
        • 默认值
          • 没有配置intent-filter标签
            • false
              • 不可以被其他应用组件访问
          • 配置intent-filter标签
            • true
              • 可以被其他应用组件访问
      • android:permission
        • 有权限的组件可准许访问Service
      • android:process
        • 配置Service运行的进程,允许Service运行在不同app进程的一个新进程
          • android:process=":aaa"
  • Service的重要方法
    • onStartCommand
      • 当其他组件调用StartService时启动,在后台无限运行,实现该方法后需调用stopSelf/stopService
    • onBind
      • 当其他组件调用bindService时启动,方法必须实现,如需不想绑定,则返回null
    • onCreate
      • 在服务第一次创建时,系统调用一次
    • onDestroy
      • 销毁
  • Service启动方式
    • started
      • 启动方式
        • startService
      • 如何销毁
        • 自己主动调用stopSelf
        • 其他组件调用stopService
      • 如何提供服务
        • startService,Service的onStartCommand会被回调处理事件
      • 特点
        • 如果没有主动调用stopService方法去停止Service,或者没有被操作系统杀死,那么service会一直运行
    • bound
      • 启动方式
        • bindService:(intent,ServiceConnection,flag)
          • 三个参数(intent,ServiceConnection,flag)
            • 需要自定义ServiceConnection,实例化onBinder 中方法
      • 如何销毁
        • 所有bound到service的组件解绑
          • unbindService
      • 如何提供服务
        • Service端
          • 创建LocalService继承Binder,实现服务需要的方法
          • onBinder中将LocalService的实例返回组件:new LocalServiceBinder()
        • Client端
          • 在ServiceConnection的onServiceConnected方法中接收IBinder对象
          • 将IBinder声明为LocalService
          • 调用LocalService方法
  • IntentService
    • 如何处理事物
      • onHandleIntent方法内处理事务
    • 特点
      • 对每个请求创建一个工作线程去处理
      • 不必同时处理多个请求
      • 请求处理完成后自动销毁
  • 使用Messenger
    • 概述
    • BindService的时候使用
    • 允许不借助AIDL的跨进程通讯
    • 如何提供服务
      • Service端
        • 实现一个Handler
        • 使用Handler创建Messenger
        • Messenger.getBinder()
      • Client端
        • bindService
        • 在ServiceConnection的onServiceConnected方法中接收IBinder对象
        • 使用IBinder对象创建Messenger
        • 使用Messenger对象发送Message
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值