Service

2019-11-01  本文已影响0人  Demon鑫

零、资料

一、简介

Android 四大组件中的计算型组件,无用户界面、在后台运行、生命周期长。
常用作提供在后台长期运行的服务,如复杂计算、音乐播放、下载等。

二、生命周期

1.生命周期图

Service 生命周期

2.外部调用方法

当在活动中调用服务时可调用如下方法。

startService()

stopService()

bindService()

unbindService()

3.Service方法

onCreate()

onStartCommand()

onDestroy()

onBind()

onUnbind()

stopSelf()

三、其他常用方法

1.startForeground

2.stopForeground

3.配置

android:enabled=["true" | "false"]

android:exported=["true" | "false"]

android:process=["Sting"]

四、编写形式

1.较标准的服务

五、分类

1.本地 vs 远程

了解IPCAIDL能更理解本地服务远程服务

本地服务(LocalService)

远程服务(RemoteService)

2.前台 vs 后台

前台服务

后台服务

3.不可通信 vs 可通信

不可通信的后台服务

可通信的后台服务

bindService() 启动:

StartService()、bindService()启动:

六、IntentService

作用

处理异步请求 & 实现多线程,任务按顺序、在后台执行,执行后自行关闭。常用做离线下载等。

流程

IntentService 流程

本质

IntentService = Handler + HandlerThread

  1. 通过HandlerThread单独开启1个工作线程:IntentService
  2. 创建1个内部HandlerServiceHandler
  3. 绑定ServiceHandlerIntentService
  4. 通过onStartCommand()传递服务intentServiceHandler、依次插入Intent到工作队列中 & 逐个发送给onHandleIntent()
  5. 通过onHandleIntent()依次处理所有Intent对象所对应的任务。

因此我们通过复写onHandleIntent() & 在里面根据Intent的不同进行不同线程操作即可。

说明

项目Demo

Demo地址 中的 Service [module]


2019-11-01

上一篇 下一篇

猜你喜欢

热点阅读