简单地说,Android属性分三种,
可在/system/init/property_services.c中看到。
(1)静态只读属性(以ro开头)
这种属性,程序不可修改,编译时,值就定了,
程序获取时,一般会先从cust仓(华为的做法)中获取,若获取不到,
再到/system/build.prop文件中获取,若获取不到,最后,会到
/default.prop文件中获取。
由于没有保存到data区,这种属性掉电不丢失,且恢复出厂设置也不丢失。
(2)以persist开头的属性
这种属性保存在/data/property/目录下,掉电不丢失,但恢复出厂设置会丢失。
(3)动态属性
如sys.usb.config等,这种属性是放在内存中的,掉电会丢失。
另外,使用sqlite数据库存储的字段的值以及SharedPreference中的数据也都是在/data分区下的,
所以恢复出厂设置时会丢失。
如果要恢复出厂设置时不丢失,可以写到专门的分区,如OEM分区,
另外,也可以写到文件中,只要文件不在/data目录下,但要注意有权限。