Android基础篇2:Service

目录
1、做用
2、生命周期
3、启动方式
4、启动方式
5、IntentService

Service简介

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

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

1、做用

2、生命周期

onCreate
onstartCommand
onBind
onunbind
ondestroy异步

3、启动方式

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

4、

5、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()方法便可。生命周期

相关文章
相关标签/搜索