Android属性:所设属性值为何在重起后被清除(2)

int property_set(const char *name, const char *value)   {       if(namelen < 1) return -1;          pi = (prop_info*) __system_property_find(name);          if(pi != 0) {           /* ro.* properties may NEVER be modified once set */           if(!strncmp(name, "ro.", 3)) return -1;              pa = __system_property_area__;           update_prop_info(pi, value, valuelen);           pa->serial++;           __futex_wake(&pa->serial, INT32_MAX);       } else {           pa = __system_property_area__;           if(pa->count == PA_COUNT_MAX) return -1;              pi = pa_info_array + pa->count;           pi->serial = (valuelen << 24);           memcpy(pi->name, name, namelen + 1);           memcpy(pi->value, value, valuelen + 1);              pa->toc[pa->count] =               (namelen << 24) | (((unsigned) pi) - ((unsigned) pa));              pa->count++;           pa->serial++;           __futex_wake(&pa->serial, INT32_MAX);       }       /* If name starts with "net." treat as a DNS property. */       if (strncmp("net.", name, strlen("net.")) == 0)  {           if (strcmp("net.change", name) == 0) {               return 0;           }          /*          * The 'net.change' property is a special property used track when any          * 'net.*' property name is updated. It is _ONLY_ updated here. Its value          * contains the last updated 'net.*' property.          */           property_set("net.change", name);       } else if (persistent_properties_loaded &&               strncmp("persist.", name, strlen("persist.")) == 0) {           /*           * Don't write properties to disk until after we have read all default properties           * to prevent them from being overwritten by default values.           */           write_persistent_property(name, value);       }       property_changed(name, value);       return 0;   }   

当用户设置属性时,如果以属性名字以persist.开头,则会同时在/data/property目录下创建以该属性名字命名的文件,并写入属性值。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ed19da62a93ee4c698ed4bd9bdfdd479.html