HarmonyOS 鸿蒙Next:请教一下为什么设置了PersistentStorage,每次打开还是初始化的值?
HarmonyOS 鸿蒙Next:请教一下为什么设置了PersistentStorage,每次打开还是初始化的值?
请教一下为什么设置了PersistentStorage,每次打开还是初始化的值,每次打开取到的 sysset 都是 0,有人知道吗?
下面是ets代码:
import bundle from '@ohos.bundle';
storageInit();
@Entry
@Component
struct Splash {
@StorageLink('sysset') sysset: number = 0; //1:看过
onPageShow() { //生命周期 3
WindowManager.setLayoutFullScreen(false, WindowManager.COLOR_WHITE,WindowManager.COLOR_BLACK, WindowManager.COLOR_WHITE, WindowManager.COLOR_BLACK);
if (this.sysset == 0) {
this.dialogController.open(); // 弹窗
}
}
dialogController : CustomDialogController = new CustomDialogController({ // 通过CustomDialogController初始化弹窗属性
builder: DialogExample({action: this.onAccept}), // 绑定弹窗属性
cancel: this.existApp,
autoCancel: true
});
onAccept() {
this.sysset+= 1;
}
//定义一些持久化缓存的数据
function storageInit() {
PersistentStorage.PersistProp('sysset', 0); //1:看过
}
更多关于HarmonyOS 鸿蒙Next:请教一下为什么设置了PersistentStorage,每次打开还是初始化的值?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
楼主这个问题解决了吗,勾选keep application data之后还是不行
更多关于HarmonyOS 鸿蒙Next:请教一下为什么设置了PersistentStorage,每次打开还是初始化的值?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
Run -> Edite Configurations -> installation Options -> Keep Application Data
勾选这一项,会保留上次缓存的值
不然每次启动app等于重新安装,之前缓存的值会被清除掉
按照这样设置后,我这边的缓存数据重新安装不会被清除了,感谢大佬,
我的设置了依旧会被清除呢…
勾选keep application data 管用,逛论坛发现细节
有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html
也就是说,此时的this
不是page
,是dialog
了,因为dialog
里没有sysset
这个变量。你可以试改为用首选项数据库,我之前做隐私协议Dialog显示时,就是用首选项来控制隐私协议对话框,如果同意了,就不再显示。
应该是这个原因,弹出窗的this不是sysset的,同一个页面,不能使用这个设计太不合理了。
你好,你之前做的隐私协议Dialog显示,用数据库方式,有没有例子参考一下,谢谢。
你的代码这里,只是想设置某个页面为全屏吗?如果整个项目都是全屏显示,应该是在EntryAbility.ets文件里设置全屏配置。而不是页面每次显示时,都要设置为全屏显示。
WindowManager.setLayoutFullScreen(false, WindowManager.COLOR_WHITE,WindowManager.COLOR_BLACK, WindowManager.COLOR_WHITE, WindowManager.COLOR_BLACK);
嗯,谢谢。我之前都加了。
是不是在弹出的窗体中去调用下面这个没用? 有没有什么办法可以。
this.sysset+= 1;
你这个onAccept() 函数是在什么时候调用的?
当点击“查看”按钮时,会调用onAccept()
函数,但似乎没有保存数据,每次打开都显示为0。
当点击“查看”按钮时,会调用onAccept()
函数,但似乎没有保存数据,每次打开都显示为0。
你给的代码,点击查看后,调用的是this.action()函数吧?不应该是this.onAccept()吗
因为在上面已经绑定过了,所以点击时会触发调用的。
builder: DialogExample({action: this.onAccept}),
针对你提到的HarmonyOS(鸿蒙)Next系统中设置了PersistentStorage但每次打开都是初始化值的问题,可能的原因及解决方向如下:
-
存储路径或权限问题:检查PersistentStorage的设置路径是否正确,以及应用是否拥有对该路径的读写权限。路径错误或权限不足都可能导致数据无法正确保存。
-
数据同步问题:如果系统或应用有数据同步机制,确认同步是否成功执行。有时数据可能因同步失败而未能持久化。
-
存储引擎或框架问题:检查PersistentStorage使用的存储引擎或框架是否存在已知问题或限制,特别是在鸿蒙系统的特定版本中。
-
代码逻辑错误:重新审视设置和读取PersistentStorage的代码逻辑,确保在设置数据后没有立即被覆盖或重置,且在读取时正确引用了存储位置。
-
系统或应用重启行为:确认系统或应用在重启后是否有清理缓存或重置存储的行为,这可能会影响PersistentStorage的数据持久性。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html 。