您现在的位置是:首页 >技术交流 >Android UEvent事件分析网站首页技术交流

Android UEvent事件分析

Jimmy8618 2024-07-13 18:01:02
简介Android UEvent事件分析

1.背景概述

众所周知,在安卓系统中有状态栏,在插入外设的时候,会在顶部状态栏显示小图标。
比如,camera设备,耳机设备,U盘,以及电池等等。这些都需要在状态栏动态显示。

在这里插入图片描述
从上面这张图片可以看出这些设备都有自己的服务一直在跑,并且都是继承了UEventObserver.java这个类去获取kernel的Event事件。下面将着重分析UEventObserver是如何去监听kernel的Event事件。

2.源码分析

(A)Java层源码分析

//frameworks/base/core/java/android/os/UEventObserver.java

/*
UEventObserver是一个从内核接收UEvents的抽象类。

子类UEventObserver实现onUEvent(UEvent事件),调用startObserving()与匹配字符串匹配,
然后UEvent线程将调用onUEvent()方法,调用stopObserving()停止接收UE事件。

每个进程只有一个UEvent线程,即使该进程具有多个UEventObserver子类实例。
UEvent线程在以下情况下启动:
在该过程中首次调用startObserving()。一旦已启动UEvent线程不会停止(尽管它可以停止通知UEventObserver通过stopObserving())

//hide
*/

public abstract class UEventObserver {

    private static UEventThread sThrea
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。