Android 开发四大组件之 Service

Android 开发四大组件之 Service

Android小彩虹2021-06-11 6:24:00670A+A-

1.简介

  • 定义 Service,是 Android 四大组件之一, 属于 计算型组件
  • 作用 提供需在后台长期运行的服务。如:复杂计算、音乐播放、下载等。
  • 特点 无用户界面、在后台运行、生命周期长。

2. 生命周期

生命周期

  1. 通过 start 方式开启服务 onCreate() -- > onStartCommand() -- > onDestory() 注意:如果服务已经开启,不会重复回调 onCreate() 方法,如果再次调用context.startService() 方法,service 而是会调用 onStart() 或者onStartCommand() 方法。停止服务需要调用 context.stopService() 方法,服务停止的时候回调 onDestory 被销毁。 特点:一旦服务开启就跟调用者(开启者)没有任何关系了。开启者退出了,服务还在后台长期的运行,开启者不能调用服务里面的方法。

  2. 采用 bind 的方式开启服务 onCreate() -- > onBind() --> onUnbind() -- > onDestory() 注意:绑定服务不会调用 onStart() 或者onStartCommand()方法 特点:bind 的方式开启服务,绑定服务,调用者挂了,服务也会跟着挂掉。绑定者可以调用服务里面的方法。

3. 类型

本地服务

调用者和 service 在同一个进程里,所以运行在主进程的 main 线程中。所以不能进行耗时操作,可以采用在 service 里面创建一个 Thread 来执行任务。service 影响的是进程的生命周期,讨论与 Thread 的区别没有意义。 任何 Activity 都可以控制同一 Service,而系统也只会创建一个对应 Service 的实例。 学习地址

远程服务

调用者和 service 不在同一个进程中,service 在单独的进程中的 main 线程,是一种跨进程通信方式。学习地址

4. IntentService

IntentService 是 Service 的子类,比普通的 Service 增加了额外的功能。先看Service本身存在两个问题:

  • Service 不会专门启动一条单独的进程,Service 与它所在应用位于同一个进程中;
  • Service也不是专门一条新线程,因此不应该在Service中直接处理耗时的任务;

特征 :

  • 会创建独立的 worker 线程来处理所有的Intent请求;
  • 会创建独立的 worker 线程来处理 onHandleIntent() 方法实现的代码,无需处理多线程问题;
  • 所有请求处理完成后,IntentService会自动停止,无需调用stopSelf()方法停止Service;
  • 为 Service 的 onBind() 提供默认实现,返回null;
  • 为Service 的 onStartCommand 提供默认实现,将请求 Intent 添加到队列中; 学习地址

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1

联系我们