java - System.getProperty(param) 返回错误值 - Android

标签 java android shell

我做的步骤:

我在代码中做

System.setProperty("myproperty", 1);

然后我在 shell 脚本中将属性“myProperty”设置为 3。 像这样:

# setprop "myproperty" 3

然后在代码中我尝试像这样读取属性:

System.getProperty("myproperty");

我得到的值为 1。这意味着来自 shell 的设置实际上没有工作。 但是当我用

从 shell 打印所有 Prop 时
# getprop

我在列表中看到 myproperty 等于 3。

简而言之:我想通过脚本更改属性的值,我看到这个脚本实际上更改了属性,但在 java 代码中我得到了旧值。

有什么想法吗?

最佳答案

Android 中的 Java 代码在 java 库中提供了 System.getProperty 和 System.setProperty 函数,但需要注意的是,尽管这些 java API 在语义上等同于 native 版本,但 java 版本将数据存储在完全不同的位置。实际上,dalvik VM 使用哈希表来存储属性。因此,java 属性是分离的,它不能获取或设置 native 属性,反之亦然。

您可以使用 android.os.SystemProperties 类来操作原生属性,尽管它仅供内部使用。它通过 jni 调用 native 属性库以获取/设置属性。

关于java - System.getProperty(param) 返回错误值 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16944494/

相关文章:

java - if else 之后 rs.next() 出错?

java - 链表插入后

java - 如何在直接 .class 文件或保存在多个子目录中的各种 jar 文件内的 .class 文件中查找特定字符串文本

linux - 删除字符串直到某个字符第一次出现

shell - Haskell 从进程中读取

java - 适用于 Android 和非 Android 开发的 Eclipse/Android Development Studio 指南

java - Selenium webDriver 2.46 卡在使用 switchto.window 切换窗口上

android - “pm install”命令在Android上无效

android - 从 map 覆盖对话框打开另一个 Activity

android - 在 Android 的回收站 View 中支持古吉拉特语字体