HarmonyOS掌上记账APP开发实践第51篇:AGC 生态集成:Toast、Dialog、日志服务的统一治理
051 —简介鸿蒙生态中AGCAppGallery Connect提供了一套完整的工具包帮助开发者高效构建应用。MoneyTrack 深度集成了多个 AGC 工具包——hw-agconnect系列的 ToastDialog 和 UIDialog 用于统一 UI 提示util-log 用于日志治理。这些工具在 SettingPage 中得到了充分展示用户操作需要确认时弹出 UIDialog 确认弹框操作成功后以 ToastDialog 轻提示反馈同时通过 util-log 记录用户行为日志用于后续分析。核心知识点1. hw-agconnect 系列包AGC 工具包通过hw-agconnectnamespace 统一导出主要包含工具包功能核心 APIhw-agconnect/uiUI 组件Toast、DialogToastDialog, UIDialoghw-agconnect/util-log日志服务Loggerhw-agconnect/cloud云服务CloudDB, CloudFunctionhw-agconnect/auth认证服务Auth2. AGC 工具包组件关系渲染错误:Mermaid 渲染失败: Parse error on line 6: ...框] Log[日志工具包hw-agc ---------------------^ Expecting SEMI, NEWLINE, SPACE, EOF, subgraph, end, acc_title, acc_descr, acc_descr_multiline_value, AMP, COLON, STYLE, LINKSTYLE, CLASSDEF, CLASS, CLICK, DOWN, DEFAULT, NUM, COMMA, NODE_STRING, BRKT, MINUS, MULT, UNICODE_TEXT, direction_tb, direction_bt, direction_rl, direction_lr, direction_td, got LINK_ID3. ToastDialog 更多用法ToastDialog 支持多种自定义配置满足不同场景的提示需求特性说明示例位置控制设置显示位置顶部、居中、底部{ align: Alignment.Top }带图标在文本前显示图标{ icon: $r(app.media.success) }自定义样式设置背景色、圆角、文本颜色{ backgroundColor: #4CAF50 }多行文本支持长文本自动换行{ text: 长文本... }// 带图标的成功提示ToastDialog.show({text:操作成功,icon:$r(app.media.ic_success),duration:2000,alignment:Alignment.Center});// 底部警告提示自定义颜色ToastDialog.show({text:网络连接不稳定,duration:3000,backgroundColor:#FF9800,textColor:#FFFFFF});4. UIDialog 更多类型UIDialog 支持多种弹框类型适用于不同的交互场景弹框类型适用场景核心配置确认弹框需要用户确认的操作退出、删除title, message, confirmButton, cancelButton提示弹框无需交互仅展示信息title, message, confirmButton单选列表从多个选项中选择一个title, items, selectedIndex多选列表从多个选项中选择多个title, items, selectedIndices确认弹框UIDialog.show({title:退出登录,message:确定要退出当前账号吗,confirmButton:{value:确定,onClick:()performLogout()},cancelButton:{value:取消}});单选列表UIDialog.show({title:选择报表导出格式,items:[PDF,Excel,CSV],selectedIndex:0,onItemClick:(index){exportReport(formats[index]);}});多选列表UIDialog.show({title:选择要同步的数据,items:[账单记录,资产信息,预算设置,分类标签],selectedIndices:[0,1],onItemClick:(indices){syncSelectedData(indices);}});5. util-log 日志分级util-log的 Logger 提供了完整的日志分级系统日志级别方法说明使用场景DEBUGLogger.debug(tag, msg)调试信息开发阶段调试发布后通常关闭INFOLogger.info(tag, msg)常规信息用户行为的常规记录WARNLogger.warn(tag, msg)警告信息非预期但可恢复的情况ERRORLogger.error(tag, msg)错误信息需要排查的异常和错误import{Logger}fromhw-agconnect/util-log;// 不同级别的日志记录Logger.debug(Feedback,用户打开反馈页面);Logger.info(Feedback,用户提交反馈附件数3);Logger.warn(Feedback,上传超时正在重试第2次);Logger.error(Feedback,上传失败服务器返回 500);6. 日志治理策略在生产环境中日志治理至关重要。以下是 MoneyTrack 采用的策略策略说明实现方式级别控制发布包关闭 DEBUG 日志根据构建配置切换日志级别隐私过滤自动过滤用户敏感信息自定义日志包装器替换手机号、身份证等日志上传用户授权后上传日志用于问题排查设置页提供上传日志按钮日志轮转本地日志文件大小控制设置最大文件大小超限自动清理// 隐私过滤的日志包装器functionsafeLog(level:string,tag:string,message:string){// 替换手机号138****1234constfilteredmessage.replace(/(1[3-9]\d)\d{4}(\d{4})/g,$1****$2);Logger[level](tag,filtered);}项目代码案例文件路径feature_settings/SettingPage.etsimport{ToastDialog,UIDialog}fromhw-agconnect/ui;import{Logger}fromhw-agconnect/util-log;// 退出登录确认弹框functionshowLogoutDialog(){UIDialog.show({title:退出登录,message:确定要退出当前账号吗,confirmButton:{value:确定,onClick:(){performLogout();ToastDialog.show({text:已退出登录,icon:$r(app.media.ic_info),duration:2000});Logger.info(SettingPage,用户退出登录);}},cancelButton:{value:取消}});}// 清除缓存成功提示functionclearCache(){// 清除缓存逻辑...ToastDialog.show({text:缓存已清除,duration:1500,alignment:Alignment.Center});Logger.info(SettingPage,缓存清除完成);}// 导出数据单选列表functionshowExportDialog(){UIDialog.show({title:导出格式,items:[PDF 报表,Excel 数据,CSV 备份],selectedIndex:0,onItemClick:(index){exportData([pdf,excel,csv][index]);Logger.info(SettingPage,用户导出数据格式${[PDF,Excel,CSV][index]});}});}AGC 工具包的统一治理让 UI 提示和日志管理不再分散各处提升了代码的规范性和可维护性。最佳实践统一弹框风格全应用统一使用 UIDialog避免同时混用系统AlertDialog和 UIDialog 导致视觉不一致。Toast 时长控制简单提示 1.5s 足矣重要操作反馈 2~3s过长的 Toast 会干扰用户操作。日志分级规范INFO 记录关键业务节点页面进入、操作完成WARN 记录可恢复异常网络超时重试ERROR 记录不可恢复异常崩溃前上下文。DEBUG 日志仅在开发环境开启。隐私合规所有日志在记录前必须经过脱敏处理手机号、身份证号等敏感信息不可明文输出。用户可控的日志上传提供日志上传功能但必须在用户明确授权后才能执行且在上传前告知用户日志包含的信息范围。组件复用将常用的 UIDialog 封装为工厂方法如showConfirm、showPicker减少重复代码保持交互一致性。推荐参考文档AGC 生态工具包指南hw-agconnect/ui API 参考hw-agconnect/util-log API 参考

相关新闻

HarmonyOS掌上记账APP开发实践第50篇:Core File Kit 与文件选择器:沙箱文件管理与批量授权

HarmonyOS掌上记账APP开发实践第50篇:Core File Kit 与文件选择器:沙箱文件管理与批量授权

050 — Core File Kit 与文件选择器:沙箱文件管理与批量授权 简介 鸿蒙系统采用沙箱文件机制来保障用户数据安全——每个应用只能访问自己的沙箱目录,访问外部文件需要通过文件选择器(Picker)获取用户授权。MoneyTrack 在反馈模块…

2026/10/10 11:39:22 阅读更多 →
HarmonyOS掌上记账APP开发实践第49篇:App Linking Kit 应用链接:延迟拉起与深度链接场景

HarmonyOS掌上记账APP开发实践第49篇:App Linking Kit 应用链接:延迟拉起与深度链接场景

049 — App Linking Kit 应用链接:延迟拉起与深度链接场景 简介 在用户拉新和回流场景中,如何让用户从外部链接直接跳转到应用内的特定页面是关键体验。App Linking Kit 提供了强大的深度链接能力,支持"延迟拉起"——即使用户尚未…

2026/10/14 12:38:09 阅读更多 →
C2000 eHRPWM寄存器配置实战:从时基到死区,驱动电机与电源设计

C2000 eHRPWM寄存器配置实战:从时基到死区,驱动电机与电源设计

1. 从寄存器手册到实战配置:eHRPWM的核心逻辑 如果你曾经在电机控制或者电源设计的项目中,面对德州仪器(TI)C2000系列微控制器那本厚厚的技术参考手册,对着eHRPWM(增强型高分辨率脉宽调制器)的寄…

2026/10/9 12:05:34 阅读更多 →

最新新闻

Qt跨数据库获取SQL表字段元数据的工程实践

Qt跨数据库获取SQL表字段元数据的工程实践

1. 项目概述:为什么“获取SQL数据表所有字段”是Qt开发中绕不开的硬需求在用Qt做数据库应用开发时,我几乎每天都会遇到这个场景:界面刚打开,需要动态加载某张表的全部字段名来构建查询条件面板;或者用户点开一个数据编…

2026/10/15 13:01:26 阅读更多 →
页面没有报截断,短屏上确认按钮却消失了:HarmonyOS 7 怎么验关键任务始终可达

页面没有报截断,短屏上确认按钮却消失了:HarmonyOS 7 怎么验关键任务始终可达

页面没有报截断,短屏上确认按钮却消失了:HarmonyOS 7 怎么验关键任务始终可达 DevEco Studio 26.0 场景化体检把“截断”纳入多设备检测,官方多设备指南也明确提醒短屏高度受限时要保证关键区可见并支持滚动。但最难发现的不是文字少一行&am…

2026/10/15 13:01:26 阅读更多 →
AI 卖课博主年入 120 万?程序员用 Cursor 算完这笔账,我沉默了

AI 卖课博主年入 120 万?程序员用 Cursor 算完这笔账,我沉默了

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 13:01:26 阅读更多 →
RetroArch BIOS 资源包:一键补齐多平台模拟器 BIOS 文件

RetroArch BIOS 资源包:一键补齐多平台模拟器 BIOS 文件

简介:这份资源面向复古游戏模拟器玩家与 Retropie、Recalbox、Lakka、Retrobat、EmuVR 等前端使用者,集中提供 libretro 体系所需的系统固件与 BIOS 文件,解决模拟器因缺少底层固件而无法启动或运行异常的问题。压缩包共 262 个文件&#xff…

2026/10/15 13:01:26 阅读更多 →
深入理解context-mode:给AI划边界,让编程更稳定、更省token

深入理解context-mode:给AI划边界,让编程更稳定、更省token

其实最开始我对context-mode这词挺不以为然,觉得不就是“多给AI塞点资料”吗?直到在项目里被坑了好几次,才意识到这观念错得离谱。有一阵子我习惯把项目里相关的文件全部丢给AI代码助手,结果它给的修改建议经常自相矛盾&#xff0…

2026/10/15 13:01:26 阅读更多 →
人脸特征提取三路线:HoG、Dlib与CNN原理及选型指南

人脸特征提取三路线:HoG、Dlib与CNN原理及选型指南

人脸识别这几年从实验室走向了门禁、考勤、相册聚类、甚至手机解锁,几乎成了计算机视觉里最"接地气"的方向之一。但真到动手做项目的时候,很多人会卡在同一个地方:特征到底怎么提?我见过不少朋友一上来就堆深度学习模型…

2026/10/15 13:00:25 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →