关于Android的SystemProperties的 set和get可能存在延时的分析

简介: 首先SystemProperties的set和get实现不一样,set时需 要通过本地socket与property service(init进程)通信, 然后property service收到请求之后再set进property workspace(共享内存方式)。
首先SystemProperties的set和get实现不一样,set时需 要通过本地socket与property service(init进程)通信,
然后property service收到请求之后再set进property workspace(共享内存方式)。
但是property service(init进程)是单线程工作,所以有时 候它可能响应比较慢(比如它正在关闭一个子进程或者正在做其他事情),
Android在设计的时候发现了这个问题,所以他们采取的措施是在set之后等待250ms, 以保证大部分时候的read-after-write能 够正确工作,
但是250ms并不能保证所有时候都能正确的工作,所以我们可以认为这是一个设 计上的缺陷。在Android源码中的注释已经说明了这一点,具体如下:



另外SystemProperties的get是直接从映射到进程中的property workspace(共享内存)获取的,
如果此时property service很忙等待了250ms之后仍然没有 set到property workspace(共享内存)中,
那么此时获取的就是错误的旧值,而不是刚刚发送给property service的新值

SystemProperties的实现框架如下图:

目录
相关文章
|
1月前
|
搜索推荐 Android开发 iOS开发
安卓与iOS系统的用户界面设计对比分析
本文通过对安卓和iOS两大操作系统的用户界面设计进行对比分析,探讨它们在设计理念、交互方式、视觉风格等方面的差异及各自特点,旨在帮助读者更好地理解和评估不同系统的用户体验。
22 1
|
2月前
|
Android开发 数据安全/隐私保护 iOS开发
安卓与iOS系统的发展趋势与比较分析
【2月更文挑战第6天】 在移动互联网时代,安卓和iOS系统作为两大主流移动操作系统,各自呈现出不同的发展趋势。本文将从技术角度出发,对安卓和iOS系统的发展方向、特点及未来趋势进行比较分析,以期为读者提供更深入的了解和思考。
36 4
|
3月前
|
监控 Android开发 C语言
深度解读Android崩溃日志案例分析2:tombstone日志
深度解读Android崩溃日志案例分析2:tombstone日志
86 0
|
3天前
|
存储 Java Android开发
Android系统 设置第三方应用为默认Launcher实现和原理分析
Android系统 设置第三方应用为默认Launcher实现和原理分析
18 0
|
3天前
|
存储 Java Linux
Android系统获取event事件回调等几种实现和原理分析
Android系统获取event事件回调等几种实现和原理分析
25 0
|
25天前
|
XML Java 数据库连接
mybatis和mybatiplus中Error attempting to get column ‘xx‘ from result set
mybatis和mybatiplus中Error attempting to get column ‘xx‘ from result set
25 0
|
2月前
|
网络协议 算法 Android开发
安卓逆向 -- 实战某峰窝APP(动态分析)
安卓逆向 -- 实战某峰窝APP(动态分析)
32 4
|
2月前
|
安全 搜索推荐 Android开发
Android 与 iOS 的比较分析
【2月更文挑战第5天】 Android 和 iOS 是目前市场上两种最流行的移动操作系统,它们都拥有自己的特点和优势。本文将会分别从操作系统设计、应用生态、安全性等方面对这两种操作系统进行比较和分析,希望能够帮助读者更好地选择适合自己的移动设备。
|
3月前
|
存储 监控 NoSQL
搞定 Redis 数据存储原理,别只会 set、get 了
搞定 Redis 数据存储原理,别只会 set、get 了
40 0
|
3月前
|
安全 算法 JavaScript
安卓逆向 -- 关键代码定位与分析技术
安卓逆向 -- 关键代码定位与分析技术
43 0