Android学习 —— 测试init.rc中的条件触发的处理顺序

测试程序

在/system/etc/init/hw/init.rc中追加下面的测试程序:

image

然后重启

日志

使用logcat抓取init的日志:

adb wait-for-device logcat -s init

测试

  • 依次设置test1和test2
vsoc_x86_64:/ # setprop pengdl.test1 1
vsoc_x86_64:/ # setprop pengdl.test2 1

然后会看到下面的日志:
image

test.txt的文件内容:

vsoc_x86_64:/ # cat /data/test.txt
1
  • 再次设置test1或者test2
vsoc_x86_64:/ # setprop pengdl.test1 1

看到如下日志:
image

文件内容还是1.

  • 设置test3
vsoc_x86_64:/ # setprop pengdl.test3 1

看到如下日志:
image
文件内容变成3

  • 再次设置test3
vsoc_x86_64:/ # setprop pengdl.test3 1

看到如下日志:
image
文件内容还是3

  • 再次设置test1或者test2
vsoc_x86_64:/ # setprop pengdl.test2 1

看到如下日志:
image
文件内容还是3

总结

从上面的测试可以得到如下结论:

  1. 当设置某个属性时,会检查所有用到该属性的section的触发条件
  2. 如果多个section的触发条件都满足,按照在文件中出现(或者说是解析时)的先后顺序依次处理
  3. 每当属性值被设置时,不管值有没有变化,都会检查触发条件
posted @ 2024-03-10 00:19  摩斯电码  阅读(19)  评论(0编辑  收藏  举报