我想在PC或Android手机上运行的草图中保存用户首选项,使用与标准"Java-way"相同的代码.
我的目的的理想候选者似乎是java.util.prefs.Preferences类.所以,我写了一个小测试脚本,看看它是否正在处理:
String prId = "counter";
Preferences prefs = Preferences.userNodeForPackage(this.getClass());
int counter = prefs.getInt(prId, 0);
println(counter);
prefs.putInt(prId, 1+counter);
Run Code Online (Sandbox Code Playgroud)
该程序每次执行时都会输出越来越多的数字 - 在PC上.在Android上,始终显示默认值(0).是否需要执行其他步骤才能在Android上运行此操作?要求的权限?是否有任何替代方案可以在两个平台上保存名称 - 值对?
视频:"WRITE_EXTERNAL_STORAGE"权限已启用
在 Android 中,存储首选项的首选方法是使用SharedPreferences. 等效的代码如下:
String prId = "counter";
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
int counter = prefs.getInt(prId,0); // Get int, default is 0
SharedPreferences.Editor prefsEditor = prefs.edit();
prefsEditor.putInt(prId, counter++); // Put counter back
prefsEditor.commit(); //Don't forget to commit the changes
Run Code Online (Sandbox Code Playgroud)
我不知道为什么java.util.prefs.Preferences在 Android 上会失败。我怀疑原因是当前Activity或应用程序被破坏后数据将被删除。
由于每个平台的目录结构不同,因此很难仅使用一种相同的方法来获得偏好。例如,数据存储在/.java/.userPrefs/**yourpacakgename**/prefs.xmlAndroid 上,而在 Windows 上存储在注册表中,~/Library/Preferences/**yourpacakgename**/prefs.xml在 Mac OS X 上则存储在注册表中。此外,您无法Preferences.userRoot()在 Android 中使用,因为应用程序无法访问root。
| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |