Service的两种启动方式

来源:互联网 发布:飞利浦 阿里云 编辑:程序博客网 时间:2024/06/09 19:14

Service基础

  • Service是什么

    • 一种可以在后台执行长时间运行操作而没有用户界面的应用组件;
    • 不能做耗时操作。
  • Service和Thread的区别

    • 定义
      • Thread是程序执行的最小单元,分配CPU的最小单位;
      • Service是Android的一种机制,运行在主线程,绝对不能执行耗时操作,由进程托管;
      • 两者没有任何关系;
    • 实际开发
      • Android开发中线程一般指后台线程做耗时操作的,service是四大组件之一,运行在主线程,不能执行耗时任务,如果一定要在service中执行耗时操作,要开Thread。
    • 应用场景
      • 耗时操作时(网络和读取文件),需要开启子线程,主线程只能执行UI的绘制,若执行了耗时操作,会报ANR异常;
      • 长时间的运行在后台且不需要和用户交互的界面。

Service的两种启动方式

  • StartService:通过Activity中开启后就不受Activity的控制了,除非手动关闭。
  • 步骤
    • 定义一个类继承Service;
    • 注册清单文件;
    • 使用Context的startService()方法启动;
    • 不使用时,调用stopService()方法停止服务。
  • 生命周期
    • oncreate():首次创建service时执行;
    • onstartcommand():做一些自己的操作,返回的是一个int值;
    • onDestroy():销毁服务,释放资源,注册的监听器等。
  • startService详情

bindService

  • bindService这种启动方式可以把Service认为是服务端,调用端是客户端,可以多个客户端对应1个服务端,当所有的客户端与服务端解绑后,服务端会销毁。
  • 步骤
    • 创建bindService服务端,继承自Service并在类中床架 一个Binder接口的实例对象并提供公共方法给客户端调用;
    • 从onBind()回调方法返回此Binder实例;
    • 在客户端中,从OnServiceConnected()回调方法并接收Binder,并使用提供的方法调用绑定服务。
  • 生命周期
    • onCreate()
    • onBind()
    • onRebind()
    • onStartCommand()
    • onUnbind()
    • onDestroy()
  • bindService详情
原创粉丝点击