Android四层框架结构
以震动为例:

应用层:
获取Vibrator对象实例
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
开始震动
vibrator.vibrate(1000);
应用框架层:
实现vibrate()方法的具体内容
实现方式:
1. Vibrator是一个抽象类,真正的实现代码在其子类SystemVibrator中。
2.通过Android IPC通讯机制(aidl),实现夸进程调用VibratorService中的vibrate方法。
3.在vibrate方法中,启动了一个线程,在线程中执行了native方法vibratorOn,到这里,java层的逻辑全部跟完了。
运行库层:
通过编译com_android_server_VibratorService.cpp,生成.so文件存放在系统运行库中!
在com_android_server_VibratorService.cpp中
static void vibratorOn(JNIEnv *env, jobject clazz, jlong timeout_ms)
实现了向震动器设备节点中写入震动时长
内核层:
创建一个后台服务,监听振动器的设备节点,从设备节点中读取需要震动的时间。通过cup控制,给震动器通电需要震动的时间
网友评论