android (六)、Service工作原理

本文详细介绍了Android服务的概念,包括应用服务和系统服务,并解释了本地服务和远程服务的区别。此外还探讨了服务的启动流程及系统服务的核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android操作系统支持后台服务,android应用程序和系统中大多都可以看到服务的影子。

一、android的服务分为两大部分:android应用服务和android系统服务。

二、android应用服务分为本地服务和远程服务;

三、android系统服务分为java服务和本地服务(c++编写);

四、java服务又分为核心平台服务和硬件服务。

android应用程序中最常用的是Serice,Service本身是个抽象类并没有什么功能实现,它只是是一个运行在主线程中的一个驱壳,所以如果要使用Service做耗时操作的话还是需要配合线程使用的。

官方推荐了一个用来做耗时任务的Service,它叫IntentService ,它拥有可以做任务的独立的线程。


应用程序Service的添加过程大致是这样的:

1、客户端调用Context.startService()或Context.bindService ();

2、Context的实现类ContextImpl开始准备添加服务,此时ContextImpl开始呼叫ActivityManagerService请求创建Service。

3、当ActivityManagerService收到信息后,信息转由ActivityService而后到ActivityThread;

4、ActivityThread此时创建Service实例并执行onCreate,然后开始运行服务。

本地Service和Activity的运行环境并没有太大差异,在同一个线程中(一般指UI线程)。


应用程序中的Service分本地service和远程Service:

1、本地service即和应用程序在同一个进程中,进程id(pid)相同。

2、远程service和应用程序不在同一个进程中,进程id(pid)不同;因为不在同一进程中,那么如果要交换数据或者通信就要用到Binder进行进程间通信。有需要的话可以了解下何为进程。

大多数应用程序都是单进程的,但有的时候为了某些目的,可能会分为多个进程;比如说你不想你的应用被无故kill掉,你可能会做一个远程的service(守护进程),一直监听着应用程序进程,在发现应用进程kill掉时重启应用程序;通常两者是互相监听,互相守护。

系统服务:系统服务为操作系统提供最核心最基本的功能、服务和系统管理。

例如:ActivityMangerService、WindowManagerService、PackagerManger、Audio Flinger和Surface Flinger。

ActivityMangerService、WindowManagerService、PackagerManger在framework层,Audio Flinger和Surface Flinger在library层;

系统服务中的本地服务用c++编写,运行在library层;java服务运行在framework层。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值