HarmonyOS鸿蒙Next中服务卡片设置定时刷新,但应用在前台时,定时刷新不起作用

HarmonyOS鸿蒙Next中服务卡片设置定时刷新,但应用在前台时,定时刷新不起作用 详细:

前提:自己写定时器定时20s刷新一次,在桌面(或log)观察卡片,会看到卡片更新了(log中也可以看到更新相关的日志)。

问题: 若应用打开着(在前台),20s时间到了,会看到卡片更新的log,但回到桌面(任意方式)后,发现卡片并没有更新

在桌面继续等待更新时机,卡片是能够正常更新的(和 前提 描述一致)

请问有遇到这种情况么? 我写了个demo也是这种情况~

18 回复

多次验证,发现卡片在后台的前提下,updateForm时,使用provider进行的UI操作超过一定次数,就会出现所说的问题。(卡片在后台,更新成功了,返回前台(桌面)时,发现更新渲染失败了)。

根本原因和卡片的更新缓存有关。

解决方案,在onUpdateForm的回调中,主动使用最新数据更新卡片。

方案说明:发生问题的场景,按Home键会回调到onUpdateForm方法。

Tips: onUpdateForm 回调时机还包括 横竖屏切换。

更多关于HarmonyOS鸿蒙Next中服务卡片设置定时刷新,但应用在前台时,定时刷新不起作用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


开发者你好,我测试了JAVA时钟卡片的Demo的定时器为10s,处于应用界面时卡片文字是可以刷新的。请提供下定时刷新的代码,谢谢

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17

多谢尝试,Demo直接使用确实没毛病~

和UI操作次数有点关系(多setText或者setVisible,次数超过某限定值;也不一定是次数了,最终和缓存有关),已完美复现。

解决方案已回帖。

我写过每隔2秒刷新卡片数据的,其实就是在Service里面开启定时任务,每隔2秒调用 updateForm(updateFormId, componentProvider) 这个方法,就可以更细卡片。

多谢尝试,Demo直接使用确实没毛病~

解决方案已回帖。

没遇到过你说的情况,你是在service里新开的线程刷新卡片还是在卡片控制器里写的定时器

Service 里面 使用 Timer,  Service是在卡片创建的时候开启的

你是在卡片上刷新图片么,目前是 卡片肉眼不可见时无法刷新图片,但文字是可以刷新的我的卡片帖子里描述了这个问题

图片.png

不涉及图片的更新,我在 基础上更改了下, 定时器改为20s刷新一次时间(显示最新时间)。

我的重点是:

正常举例->

定时器在创建卡片时候打开着,停留在桌面,可以看到时间在刷新(20s刷新一次).

异常举例->

我12:00:00时,打开卡片应用,此时卡片应用于处于前台,定时器开启工作,20s后刷新卡片显示最新时间,我等待30s,回到桌面,发现卡片显示的还是12:00:00。 log可以看到定时器 run执行了刷新,且updateForm返回true。

也就是 卡片不可见的时候,我刷新卡片的文字信息,发现刷新不了。但实际调用了updateForm且成功了。

我修改了JAVA时钟卡片的Demo的定时器为10s,处于应用界面时卡片文字是可以刷新的.

这就很尴尬了,我重新打开一个新的卡片时钟的项目,确实是OK的。

我自己先慢慢定位下啥原因导致的。

多谢了。

据说 定时刷新 时间最短为30分钟一次。。。。。。。。。。。。。。所以 你是不是有什么误解。

我说的是自己写定时器进行刷新;  你说的是config里面设置的那个~

一样的 卡片的定时刷新 只能是config里 30分钟一次。 自己写?循环? 不行的。 就两种刷新 一种是点击卡片 主动刷新,一种是config 最短30分钟定时刷新。

为啥说只能主动点击 更新呢,主动点击更新不就是调用updateForm,自己写个Timer&TimerTask,时间到了拿最新数据去主动updateForm,不香么?

不纠结这个问题了,可以 搜 #HarmonyOS征文# 有很多文章。

欢迎开发小伙伴们进来帮帮楼主

在HarmonyOS鸿蒙Next中,服务卡片的定时刷新机制默认在应用处于后台时生效,以确保资源的高效利用。当应用处于前台时,系统会认为用户正在主动与应用交互,因此不会触发定时刷新。如果您需要在前台时更新卡片内容,可以通过监听应用生命周期事件,手动调用updateForm方法来更新卡片数据,确保用户体验的连贯性。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!