native层利用底层节点变化,再针对变化进行相应的函数调用,实现某些功能。
架构如下:
底层提供节点更新,以及healthd读取节点的实现,都比较简单。而其余部分比较关键。
特别注意init监控prop,并触发接口,调用具体函数的这个路径。
具体关键实现点如下:
Running Service:修改prop的方法
property_set("batt.consist", "1");
init进程:do work的函数实现
void write_batt_data(void) {...}
init进程:监控property的实现(建立监控,触发do work,并传参)
on property:batt.consist=*
write_consist_data ${batt.consist} #这块还不理解配置的格式和具体意义,write_consist_data为触发的接口
builtins.cpp:
BuiltinFunctionMap::Map& BuiltinFunctionMap::map() const { constexpr std::size_t kMax = std::numeric_limits<std::size_t>::max(); static const Map builtin_functions = { 。。。 {"write_consist_data", {1, 1, do_write_consist_data}}, //触发的接口链接到具体函数:do_write_consist_data 。。。 }
static int do_write_consist_data(const std::vector<std::string>& args) { write_batt_consist_data(); return 0; }
对应文件中具体函数实现:
void write_batt_consist_data(void) {...}