HarmonyOS入门开发(三) 持久化存储Preferences

接入鸿蒙几天以来,发现各种和Android不一样的地方,今天来看一下Preferences存储

在Android中比如有ShardPreferences、Mmkv这些持久化存储方式,开发起来很方便,读取速度也很快,在鸿蒙里面也提供了对应的持久化存储方案,下面来探索一下

需要导入的包

import data_preferences from '@ohos.data.preferences';
import common from '@ohos.app.ability.common';

声明一个用来操作的preferences对象

const context = getContext(this) as common.UIAbilityContext;
export let promise = data_preferences.getPreferences(context, 'teacher');

数据存储Put

promise.then((res) => {
   console.log("-------" + name + "-------" + valuer)
   res.put(name, valuer)
   res.flush()	//一定要flush
})

数据Get

promise.then((res) => {
     res.get(name, "")
        .then((data: data_preferences.ValueType) => {
     console.log("-------" + data.toString())
   })
})

代码呢,是不多,但是鸿蒙的这个存取都是异步操作,导致很多时候不能直接同步获取,至于取一条数据的时间消耗,可以看一下下图:
在这里插入图片描述差不多150毫秒的样子,操作频繁的地方,还是非常鸡肋的,后续看看鸿蒙会不会优化,同时可同步获取吧,就目前而言,开发起来没有生态,还是很吃力的!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是使用Shared Preferences进行数据持久的示例代码: ```dart import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; class ExamplePage extends StatefulWidget { @override _ExamplePageState createState() => _ExamplePageState(); } class _ExamplePageState extends State<ExamplePage> { TextEditingController _controller = TextEditingController(); String _savedText = ''; @override void initState() { super.initState(); _loadSavedText(); } void _loadSavedText() async { SharedPreferences prefs = await SharedPreferences.getInstance(); String savedText = prefs.getString('savedText') ?? ''; setState(() { _savedText = savedText; _controller.text = savedText; }); } void _saveText(String text) async { SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setString('savedText', text); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Example Page'), ), body: Padding( padding: EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: <Widget>[ TextField( controller: _controller, decoration: InputDecoration( labelText: 'Enter some text', ), onChanged: (text) { _saveText(text); }, ), SizedBox(height: 16.0), Text( 'Saved text: $_savedText', style: TextStyle(fontSize: 18.0), ), ], ), ), ); } } ``` 在上述代码中,我们首先在initState()方法中加载之前保存的文本,并将其设置为文本框的默认值。然后,我们在文本框中输入文本时使用SharedPreferences实例保存文本。最后,我们将保存的文本显示在屏幕上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落魄的Android开发

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值