三 service 面试详解

时间:2024-05-20 19:12:34

一 基础知识

01 定义

service 中文译为服务。它和 activity boardcastReceive contentProdived,并称为 Android 四大组件,service 属于计算型的组件。

02 作用

提供长期运行在后台的服务,例如播放音乐,复杂计算,下载,实时传输地理位置信息等。

03 特点

长生命周期,没有用户界面,运行在后台,进程的优先级高于 activity 。运行在主线程,不能执行耗时操作。

二 service 生命周期

service 的生命周期和启动 service 的方式有关,启动 service 的方式有以下三种:

01 非绑定式

非绑定式就是以 startService 启动服务的方式

1 手动调用的方法

启动服务:startService(Intent intent)
停止服务:stopService(Intent intent)

2 内部调用方式

创建服务:onCreate()
开始服务:onStartCommand()
销毁服务:onDestory()

3 生命周期流程

三 service 面试详解

02 绑定式

绑定式就是以 bindService 方式启动的服务

1 手动调用的方法

绑定服务:bindService(Intent intent,ServiceConnection conn,int BIND_AUTO_CREATE )
解绑服务:unBindService(Intent intent)

2 内部调用的方法

创建服务:onCreate()
绑定服务:onBind()
解绑服务:unBind()
销毁服务:onDestory()

3 生命周期流程

三 service 面试详解

03 混合式

混合式顾名思义,就是以 startService 和 bindService 两种方式混用启动 service 。

1 生命周期流程

三 service 面试详解

04 非绑定式和绑定式的区别

1 与调用者的关系

非绑定式:startService 和 stopService 只能 开启服务和关闭服务,无法操作服务。它与调用服务的对象没有任何关系。调用的对象销毁了,service 也依然存在。

绑定式:bindService 和 unBindService 负责 service 与调用者的绑定和解绑。调用者对象销毁之后 service 不能存在。需要注意的地方是:需在在调用者销毁之前,必须进行与 service 之间,解除绑定。例如在 Activity 中的 onDestory() 方法中进行解绑操作。

2 通信

非绑定式:非绑定式的 service 与 调用者之间,没有任何关系。所以不存在通信的条件。

绑定式:绑定式的 service 与调用者之间,产生了绑定的关系。在绑定的方法中,传入 ServcieConnection 的实现类,作为纽带。实现类中有两个回调方法,回传了携带数据的 IBinder 对象,从而实现了 service 和调用者之间的通信。

三 service 分类

三 service 面试详解