Android UEvent

来源:互联网 发布:mac下载软件需要验证 编辑:程序博客网 时间:2024/05/21 17:57
Android很多事件都是通过uevent跟kernel来异步通信的。其中类UEventObserver是核心。UEventObserver接收kernel的uevent信息的抽象类。1、server层代码  1)battery server:  frameworks/frameworks/base/services/java/com/android/server/SystemServer.javaframeworks/frameworks/base/services/java/com/android/server/BatteryService.java2、java层代码   frameworks/base/core/java/android/os/UEventObserver.java3、JNI层代码   frameworks/base/core/jni/android_os_UEventObserver.cpp4、底层代码   hardware/libhardware_legacy/uevent/uevent.c   读写kernel的接口socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);

二、UEventObserver的使用

类UEventObserver提供了三个接口给子类来调用:1、onUEvent(UEvent event)   子类必须重写这个onUEvent来处理uevent。2、startObserving(String match)   启动进程,要提供一个字符串参数。3、stopObserving()   停止进程。例子: //在BatteryService.java中 mUEventObserver.startObserving("SUBSYSTEM=power_supply"); private UEventObserver mUEventObserver = new UEventObserver() {    @Override    public void onUEvent(UEventObserver.UEvent event) {        update();    } }; 在UEvent thread中会不停调用 update()方法,来更新电池的信息数据。