【JAVA UI】【HarmonyOS】Preferences的基本使用
场景介绍:
轻量级数据存储功能通常用于保存应用的一些常用配置信息,并不适合需要存储大量数据和频繁改变数据的场景。应用的数据保存在文件中,这些文件可以持久化地存储在设备上。需要注意的是,应用访问的实例包含文件所有数据,这些数据会一直加载在设备的内存中,直到应用主动从内存中将其移除前,应用可以通过Preferences的API进行数据操作。
接口说明:
轻量级存储为应用提供key-value键值型的文件数据处理能力,支持应用对数据进行轻量级存储及查询。数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括整型、字符串型、布尔型、浮点型、长整型、字符串型Set集合。
参考网址:
文档中心
代码实现:
MainAbilitySlice.java
package com.example.preferencesdemo.slice;import com.example.preferencesdemo.ResourceTable;import ohos.aafwk.ability.AbilitySlice;import ohos.aafwk.content.Intent;import ohos.agp.components.Component;import ohos.agp.components.Text;import ohos.app.Context;import ohos.data.DatabaseHelper;import ohos.data.preferences.Preferences;public class MainAbilitySlice extends AbilitySlice { Text textResult; @Override public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); Context context = getContext(); // 数据文件存储路径:/data/data/{PackageName}/{AbilityName}/preferences。 // Context context = getApplicationContext(); // 数据文件存储路径:/data/data/{PackageName}/preferences。 DatabaseHelper databaseHelper = new DatabaseHelper(context); // context入参类型为ohos.app.Context。 String fileName = "test_pref"; // fileName表示文件名,其取值不能为空,也不能包含路径,默认存储目录可以通过context.getPreferencesDir()获取。 Preferences preferences = databaseHelper.getPreferences(fileName); textResult = findComponentById(ResourceTable.Id_text_result); //todo 实现点击设置key_value点击事件 findComponentById(ResourceTable.Id_text_putdata).setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { preferences.putInt("intKey", 3); preferences.putString("StringKey", "String value"); textResult.setText("保存成功"); } }); //todo 实现读取值得事件 findComponentById(ResourceTable.Id_text_get_data).setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component component) { int value = preferences.getInt("intKey", 0); String str = preferences.getString("StringKey", "Str"); textResult.setText("读取结果1:"+value+"读取结果2:"+str); textResult.setTruncationMode(Text.TruncationMode.AUTO_SCROLLING); // 始终处于自动滚动状态 textResult.setAutoScrollingCount(Text.AUTO_SCROLLING_FOREVER); // 启动跑马灯效果 textResult.startAutoScrolling(); } }); } @Override public void onActive() { super.onActive(); } @Override public void onForeground(Intent intent) { super.onForeground(intent); }}
ability_main.xml
运行效果:
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh