基础篇2:Service

目录
一、作用
二、生命周期
三、启动方式
四、启动方式
五、IntentService

Service简介

Service是Android程序中四大基础组件之一,它和Activity一样都是Context的子类,只不过它没有UI界面,是在后台运行的组件。

注意

  1. 长期运行的后台任务 — Service是Android中实现程序后台运行的解决方案,它非常适用于去执行那些不需要和用户交互而且还要求长期运行的任务。
  2. 执行在UI线程中 — Service默认并不会运行在子线程中,它也不运行在一个独立的进程中,它同样执行在UI线程中,因此,不要在Service中执行耗时的操作,除非你在Service中创建了子线程来完成耗时操作。

一、作用

二、生命周期

onCreate
onstartCommand
onBind
onunbind
ondestroy

三、启动方式

  • startservice — startservice 一旦被开启 与调用者 就没有关系了。这个服务 会长期的在后台运行。
  • bindservice — bindservice 是 将调用者 与 服务绑定,如果开启这个服务的 activity 被销毁,那么这个服务也相应的要挂掉

四、

五、IntentService

IntentService简介

IntentService是继承于Service并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService的方式和启动传统Service一样,同时,当任务执行完后,IntentService会自动停止,而不需要我们去手动控制。另外,可以启动IntentService多次,而每一个耗时操作会以工作队列的方式在IntentService的onHandleIntent回调方法中执行,并且,每次只会执行一个工作线程,执行完第一个再执行第二个,以此类推。

Service本身存在两个问题

  1. Service不会专门启动一条单独的进程,Service与它所在应用位于同一个进程中。
  2. Service也不是专门一条新线程,因此不应该在Service中直接处理耗时的任务。
IntentService特征
  • 会创建独立的worker线程来处理所有的Intent请求。
  • 会创建独立的worker线程来处理onHandleIntent()方法实现的代码,无需处理多线程问题。
  • 所有请求处理完成后,IntentService会自动停止,无需调用stopSelf()方法停止Service。
  • 为Service的onBind()提供默认实现,返回null。
  • 为Service的onStartCommand提供默认实现,将请求Intent添加到队列中。
  • 所有请求都在一个单线程中,不会阻塞应用程序的主线程(UI Thread),同一时间只处理一个请求。
  • 不可以直接和UI做交互。为了把它执行的结果体现在UI上,需要把结果返回给Activity。
  • 工作任务队列是顺序执行的,如果一个任务正在IntentService中执行,此时你再发送一个新的任务请求,这个新的任务会一直等待直到前面一个任务执行完毕才开始执行。
  • 正在执行的任务无法打断。
使用IntentService的好处
  • 省去了在Service中手动开线程的麻烦。
  • 当操作完成时,不用手动停止Service。
使用步骤

继承IntentService类,并重写onHandleIntent()方法即可。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 161,590评论 24 692
  • 1.什么是Activity?问的不太多,说点有深度的 四大组件之一,一般的,一个用户交互界面对应一个activit...
    JoonyLee阅读 4,613评论 2 51
  • 面试题总结 通用 安卓学习途径, 寻找资料学习的博客网站 AndroidStudio使用, 插件使用 安卓和苹果的...
    JingBeibei阅读 1,162评论 2 21
  • 从 iOS6--->iOS9,及至即将的发布 iOS10(iOS X?)的,功能越发完善,和Android也愈发互...
    小林记阅读 459评论 0 51
  • 现在时间是 7:30 计划 8:30 之前的单词 搞定 ;听力 和新闻 随意看看 9点多开始 正式学习了
    淮镇阅读 68评论 0 0
  • 1.感恩孩子虽然生病了,但还好只是小毛病。 2.感恩我父母愿意帮我照顾我孩子。 3.感恩今天早上出门有个好天气。 ...
    至霖糖心阅读 301评论 0 1
  • 目录 上一章 “我与安千户,水虎国师,”朱辰又看了杨慎一眼,见他有些神不守舍,似乎在思索什么,嘴角遂又勾出个略带讥...
    步六孤大将军阅读 155评论 13 17