文档开发者中心
我的
官方话题
查看更多
1
互动有礼 千里之外,一键互通!解锁“远程分享”的N种新玩法
4人参与了话题
2
[已结束] 互动有礼,「我与鸿蒙这一年」!
370人参与了话题
3
[已结束] 互动有礼,玩转空间音频,让声音跳出平面、“声”临其境!
123人参与了话题
推荐
最热
最新
HarmonyOS 开发者中心官方
Lv7
活动背景为加速应用/元服务多设备适配进程,提升开发效率,现推出“AI 多设备适配”专项活动。使用 HarmonyOS 开发助手快速完成一多适配,并在截止日期前成功更新或上架应用/元服务,就有机会赢取丰厚大奖!活动时间:2026 年 11 月 10 日 - 11 月 30 日;应用/元服务需在 2026 年 12 月 10 日 24:00 前完成更新或上架。奖项设置──────────────────────────────────────────────────核心奖项(按更新或上架应用/元服务数量排名):根据活动期间使用 HarmonyOS 开发助手的一多适配能力并成功更新或上架的应用/元服务数量进行排名,如数量并列,以更新/上架时间为准,先达成数量者靠前。奖项名额奖品一等奖1 名华为手机 HUAWEI Pura 70 Pro(12GB + 512GB 全网通版 · 雪域白)二等奖1 名华为平板 HUAWEI MatePad Pro(WIFI 版 / 12GB + 256GB / 砚黑 / 云晰柔光版 / 12.2 英寸)三等奖2 名华为耳机 HUAWEI FreeClip 2(耳夹耳机 / 无线充 / 摩登黑)同行奖(前 50 名):活动期间使用 HarmonyOS 开发助手的一多适配能力,且累计更新或上架应用/元服务数量排名前 50 名(不含已获一、二、三等奖名额),奖品为 HarmonyOS 礼盒。参与规则──────────────────────────────────────────────────1. HarmonyOS 开发助手使用:获取并安装 HarmonyOS 开发助手(DevEco Studio、VS Code)。2. 开发指南:多设备适配。3. 应用/元服务上架:使用 HarmonyOS 开发助手适配的应用/元服务,须在 12 月 10 日前完成更新/上架,以应用市场上架状态为准。4. 排重说明:同一应用/元服务不可同时参与“HarmonyOS 开发助手挑战赛”。参加开发助手挑战赛被统计的应用/元服务不参与本次活动,开发者名下未被统计到的其他应用/元服务均可参与。5. 排名依据:奖项依据更新或上架应用/元服务数量计算评定,如数量并列,以更新/上架时间为准,先达成数量者靠前。6. 报名地址:点击下方入口前往活动报名页。活动报名入口 developer.huawei.com · AI 多设备适配活动报名 温馨提示:应用备案及上架流程需预留充足周期,建议提前启动准备工作。奖励评选与发放细则──────────────────────────────────────────────────对于获奖的开发者,我们会在 2026 年 12 月 25 日前,通过官网社区帖及活动报名详情页进行公示。公示中获奖的开发者需在 2026 年 12 月 31 日及之前,通过活动报名时填写的邮箱,将兑奖邮件发送至 agconnect@huawei.com,邮件内容需包含:开发者名称、开发者账号 ID、应用/元服务名称及 ID、个人姓名、联系电话、地址。相关信息仅用于核实获奖者身份以及活动礼品发放,详细可见《关于华为开发者联盟与隐私的声明》。逾期(即截止 2026 年 12 月 31 日)未发送兑奖邮件的开发者,视为主动放弃该奖励。注:具体评审细则及获奖名单将以官方最终公告为准。

评论13

浏览 548

发布于昨天06:57
HDD创新论坛小助手
Lv7
11月27日,HDD·HarmonyOS创新论坛(AI专场)广州站聆听专家和开发者们的精彩分享,聊聊小艺Agent与Skill玩法、AI开放能力、 HarmonyOS开发助手、AI辅助故障定位等。更新增DevEco Code/CLI、云测云调助力应用高效上架、星盾AI安全底座打造智能化主动安全等内容,助力应用提质增效;参与互动环节还有机会赢取限定周边,快来报名参加吧!报名链接:https://developer.huawei.com/consumer/cn/activity/201793846744093060?ha_source=BD&ha_sourceId=89000206参会说明报名成功后,将会以短信的形式通知您,请您凭借审核通过后的凭证参会。温馨提示:单站活动报名将于活动前一个工作日的18:00截止了解更多Harmony Intelligence请点击这里

评论25

浏览 99

发布于4天前
社区运营
Lv10
 本文由小红书体验设计团队撰写,分享小红书在 HarmonyOS 多设备适配中的设计思路与开发实践。小红书是一个以内容发现、浏览和互动为核心的社区产品。随着设备形态不断丰富,屏幕正在从相对固定的尺寸和比例,走向更丰富的空间形态。以 HUAWEI Pura X Max 为例,展开后采用 7.7 英寸阔型内屏,横向可用空间明显增加。但对内容社区来说,屏幕变大,并不意味着简单放大原有页面。当窗口从窄变宽,可用空间发生变化后,一个新的问题随之出现:新增的空间,究竟应该用来做什么?对于信息流、内容详情、消息等不同场景,答案并不相同。在 HarmonyOS 多设备适配实践中,我们从这些具体场景出发,探索如何根据空间变化调整内容组织、信息关系和操作方式,让新增空间真正服务于用户任务。信息流:屏幕变宽后,是把内容放大,还是让用户看到更多?信息流是用户发现内容最主要的入口之一。在传统手机上,瀑布流需要在内容尺寸和浏览效率之间取得平衡。但当屏幕展开、横向空间增加后,一个新的选择随之出现:是让每张卡片变大,让单条内容更加突出;还是增加列数,让用户一屏看到更多内容?如果保持原有列数,新增空间可以让图片和文字拥有更大的展示面积;若增加列数,则能够提高一屏内容的数量,让用户更快完成探索与浏览。两种方式对应的是不同的浏览需求。而对于内容社区来说,用户的浏览需求并不总是相同的:有时,用户需要快速发现更多内容,有时,则希望仔细查看某一条笔记。因此,大屏下的信息密度不一定只有一个固定答案。在 Pura X Max 中,我们根据内外屏不同的空间条件,分别提供了灵活的瀑布流布局:外屏支持在两列与三列之间切换,内屏支持在三列、四列与五列之间切换。 用户可以通过双指捏合调整内容密度,根据当前屏幕空间和浏览需求,选择更适合自己的浏览方式。这一设计带来的变化,很快就得到了用户的反馈:“双指一捏,两列秒变三列,一屏能多看 50% 的内容。”当更多内容能够同时进入视野后,用户可以减少频繁滑动,通过快速浏览封面筛选感兴趣的笔记,再决定是否深入阅读。新增的横向空间,也因此转化为更高效的内容发现体验。这里的关键,并不只是增加瀑布流列数,而是让内容密度能够根据可用空间灵活变化。如果布局规则与设备型号绑定,随着设备形态不断增加,适配规则也可能随之变得更加复杂。相比为每种设备单独定义布局,我们更关注将布局变化与窗口或容器的可用空间建立关联,让布局根据实际空间自然调整。HarmonyOS 提供的响应式布局、断点等能力,可以用于承接这种空间变化,根据不同空间区间调整网格列数、组件尺寸等布局规则,让页面布局随空间变化自然调整。对于信息流而言,这意味着布局不必始终遵循固定的列数,而可以根据空间条件与浏览需求,在内容尺寸和信息密度之间找到更合适的平衡。用户的另一条反馈,也很好地说明了这种变化带来的价值:“大大减少了手指滑动的频次,我们现在信息筛选更多是通过眼睛扫,小红书很多时候先看封面,再决定是否点进去看内容。”沉浸浏览:内容优先时,哪些界面能主动退让?Pura X Max 外屏为 5.4 英寸,相较展开后的内屏,纵向空间更加受限。顶部导航、页签和底部操作区域如果始终占据固定空间,留给内容本身的区域就会受到挤压。面对这种情况,除了调整页面布局,我们还可以改变界面元素的显示方式:当用户进入连续浏览状态时,能否让暂时不需要的界面元素主动退让?在连续浏览场景中,我们根据不同屏幕形态调整界面元素的隐藏方式。在 Pura X Max 外屏上,随着页面滑动,顶部和底部 Tab 可以同时隐藏,减少导航区域对屏幕空间的占用,让更多内容进入视野。而在内屏横屏场景中,考虑到用户浏览笔记、视频时,视觉重心更多集中在屏幕下方,我们选择优先隐藏底部 Tab,将释放出的空间留给内容展示,同时保留顶部 Tab,方便用户在不同内容频道之间切换,兼顾浏览的沉浸感与操作的便捷性。同样是滑动隐藏,内外屏并没有采用完全一致的处理方式,而是根据不同屏幕形态下的内容布局与浏览习惯,调整导航元素的显示策略,在内容浏览与操作便利性之间取得平衡。用户对此的感受十分直观:“向下滑动后,上下状态栏被自动隐藏,满屏都是帖子,一屏可以多看好多内容。”除了动态隐藏界面元素,我们也在 Pura X Max 等设备体验中结合沉浸光感设计,让界面组件与内容区域之间形成更自然的视觉衔接,进一步强化连续浏览时的沉浸感。在横屏展开态的短视频笔记场景中,我们还结合智感握姿能力优化悬浮组件交互,让组件能够随用户握持状态自然调整位置,在保持视频沉浸浏览的同时,让互动操作更加顺手。注:小红书智感握姿功能目前仅支持 Pura X Max、Mate XT 2 机型的横屏展开态,且仅适用于短视频笔记界面。在这些体验中,HarmonyOS 提供的滑动隐藏、沉浸光感、智感握姿等体验进阶设计与实现方式,帮助扩大内容展示区域,为界面元素的动态收起、内容区域的扩展和悬浮组件的交互优化提供了支持。从这一场景可以看到,空间优化不一定要依靠增加布局区域,可以根据用户状态,减少非当前任务所需界面的占用,将更多空间留给正在浏览的内容。图文详情:当空间足够时,关联的信息能否同时看到?进入一篇笔记后,用户的任务就从发现探索转向了阅读和互动。在窄屏手机上,图片、正文和评论通常按照纵向结构排列,用户需要先浏览内容,再向下查看评论。而当横向空间增加后,若仍然沿用单栏结构,页面虽然变宽了,用户获取内容和互动信息的路径却没有发生变化。于是需要重新思考:图片和评论一定要前后查看吗?当空间足够时,能不能让用户边看边评?如果只是继续放大图片,新增的横向空间仍然主要服务于单一内容;而如果把评论区引入同一视野,则可以改变内容与互动信息的组织方式。在 Pura X Max 等设备的大屏场景中,我们通过“边看边评”体验,让图片与评论同时呈现:用户可以在左侧查看图片,在右侧浏览评论,不必在内容与互动信息之间反复切换。与此同时,我们结合沉浸光感体验,对界面进行模糊透底处理,让图文区域的视觉层次更加协调。这种布局调整带来的变化,不仅体现在页面结构上,也体现在用户获取信息的过程中:“左边高清大图,右边滚动评论和文字说明,信息分区清晰,再也不用来回翻看。”还有用户表示:“一边翻看图片,一边看网友心得,学习效率直接 double。”当图片、正文与评论能够同时进入视野,用户便可以在阅读笔记的同时浏览其他用户的观点,减少在内容与评论之间来回切换的操作。在“边看边评”体验中,我们没有简单地将新增空间用于放大图片,而是将图片与评论组织在同一视野中,让用户在阅读内容的同时获取互动信息。这一实践也带来一个值得关注的思路:页面布局如何调整,不仅取决于屏幕空间的大小,也与用户需要获取的信息关联程度有关。当图片与评论、列表与详情等信息具备较强的关联性,且窗口空间能够满足并列展示的需要时,页面结构就有可能从“前后出现”转向“同时出现”。HarmonyOS 提供的响应式布局、分栏等相关能力,可以帮助将这种结构变化转化为随空间变化的布局规则:当窗口达到相应空间条件时,单栏结构可以自动切换为并列展示;当空间重新收窄时,再回到单栏结构。对于我们而言,适配的重点不只是让页面适应不同尺寸的屏幕,更重要的是结合空间条件、用户任务与信息关系,找到更合适的内容组织方式,从而提升信息获取效率。消息页面:当空间足够时,还需在列表与内容之间切换吗?图文详情关注的是关联信息能否同时呈现,而消息场景面对的是另一类高频切换问题。在手机上,由于空间有限,消息列表与会话内容通常采用两级页面结构:消息列表 → 打开会话内容 → 返回列表 → 再打开下一条会话但当窗口拥有更多空间时,新的问题随之出现:如果列表和内容已经能够同时放进一个窗口,“返回列表”这一步还有没有必要?在空间足够的情况下,我们通过分栏重新组织消息页面:左侧保留列表,右侧展示当前内容。用户可以直接在列表中切换不同消息,右侧内容随之更新。通过这种方式,大屏空间不再只是用于展示更多内容,而是帮助我们减少原有任务链路中的操作步骤。用户可以在保留列表上下文的同时,连续查看不同会话,不必每次都先返回列表,再进入下一条消息。类似的设计思路也适用于“列表 + 详情”“目录 + 内容”“导航 + 详情”等页面,当窗口空间发生变化时,这些原本依赖页面层级完成的信息浏览任务,也可能转变为同一页面内的并列操作。HarmonyOS 的响应式布局和窗口适配能力,可以让这种结构变化随着窗口尺寸自然发生,而不需要针对不同设备分别维护一套业务页面。在空间达到相应条件时,列表与详情可以自动组合到同一页面中。通过这一场景,我们也重新认识到原有的一些页面跳转并非任务本身所必需,可能是受限于屏幕空间才产生的,当空间条件发生变化,这些操作步骤也可以重新评估。​从适配设备到响应窗口:让一套规则覆盖更多形态回顾以上场景,我们解决的问题各不相同:信息流需要在内容尺寸与浏览效率之间取得平衡;沉浸浏览需要为内容释放更多可视空间;图文详情需要让关联信息同时呈现;消息页面则需要减少列表与内容之间的重复切换。但这些实践背后,有一个共同的出发点:根据当前窗口能够提供的空间,以及用户正在完成的任务,决定内容应该如何组织、界面应该如何呈现。随着直板机、折叠屏、双折叠、三折叠等设备形态不断丰富,同一应用需要面对的空间组合也越来越多。相比完全按照设备型号定义页面规则,将布局与窗口空间建立关联,成为多设备适配中的一种实现思路。HarmonyOS 面向多终端提供“一次开发,多端部署”能力。通过界面、功能和工程等不同层面的适配,让一套代码工程可以面向不同类型终端进行部署和体验适配。对应到我们的具体实践,这些变化分别体现为:列数调整、界面元素的动态隐藏、信息关系重组、以及单栏与分栏切换。这些变化背后对应的是不同的空间条件和用户任务:信息流关注内容发现,沉浸浏览则关注内容区域的可视空间,图文详情关注关联信息的同时呈现,消息页面关注列表与内容之间的切换。设备形态变化带来的,不仅是屏幕尺寸变化,还包括可用空间、窗口比例和布局关系的变化。因此,在面对新设备形态时,我们不仅关注设备的变化,还可以思考:这个设备带来了什么新的空间条件,现有的布局规则又能否自然响应?让每一块新增的屏幕空间,都产生价值从 Pura X Max 带来的不同屏幕空间出发,我们关注的并不是简单放大页面,而是如何让新增空间更好地服务于用户需求。在不同场景下探索不同的空间利用方式:信息流中,增加内容密度,让用户根据浏览需求调整列数;沉浸浏览中,让暂时不需要的界面元素主动退让,把空间还给内容。图文详情中,重新组织信息关系,让图片与评论同时进入视野;消息页面中,并列列表与内容,减少原本由屏幕限制带来的页面跳转;从窄屏走向宽屏,原来的内容和交互方式是否仍然适合新的空间,成为适配过程中需要面对的问题。从页面放大到信息重组,从适配具体设备到响应窗口空间,这些场景呈现出一个变化:同样的内容和用户任务,在不同空间条件下,可以对应不同的组织方式。在这一过程中,HarmonyOS 提供的响应式布局、断点、分栏、窗口适配以及“一次开发,多端部署”等能力,为这些页面布局调整和体验优化提供了技术支持。从我们的实践来看,多设备适配不只是调整页面尺寸,更是根据空间条件和用户任务,重新组织内容与交互方式,让新增空间承载更多信息、呈现更完整的内容,并带来更自然的交互体验和更高效的操作路径。而这些变化,最终都被用户真实感知。注:不同设备型号、系统版本及应用版本的功能与体验可能有所差异,具体以实际使用情况为准。你在做多设备适配时,遇到的最大挑战是什么?欢迎在评论区留言交流~

评论56

浏览 39.6k

发布于2026-10-28 07:40
社区运营
Lv10
做应用上架,最怕什么?不是代码写不完,不是UI改到吐,而是——资质材料又双叒没通过审核。“这个报告是什么?”“授权书到底怎么开?”“ICP和增值电信有什么区别?”别慌,你不是一个人。我们扒了近期的审核数据,发现大部分资质审核不通过,都集中在下面这5类问题上。今天一次讲清楚,帮你少走弯路,早日上架。TOP1:《安全评估报告》 相关材料为什么排第一?因为它涉及的应用范围广,且提交时容易缺失部分或者其内容不符合审核规范要求。常见不通过场景:(1)该交没交:应用含社区、交友聊天、直播、AI生成等具有舆论属性或社会动员能力的互联网信息服务功能内容,未提交安全评估报告。(2)交了但不对:服务名称与应用名称不一致、主体名称与开发者名称不一致、未在“全国互联网安全管理服务平台 ”完成提交或未提供“审核通过”状态截图。提交指南:对照《应用资质审核要求》 《安全评估报告》 确认是否需要。如需要提交:可参考官方资质示例提供,先检查《安全评估报告》内容是否正确与完整(服务名称需与应用名称一致,单位名称需与开发者名称一致,通常为3页,主要内容有7点),最后截图保存“审核通过”状态。TOP2:《人工智能生成合成内容标识相关材料》 随着人工智能生成合成技术的高速发展,“人工智能生成合成内容标识”也成了高频问题,很多开发者还没有意识到行业对此已有明确的法律法规要求。常见不通过场景:(1)应用含AI生成/合成功能,但生成内容未添加显式标识且未提供“应用内已添加内容显式标识截图”。(2)应用提供了生成合成内容文件的导出或下载等功能,未在文件元数据中添加隐式标识且未提供“人工智能生成合成内容标识说明函”。(3)说明函内勾选了多个人工智能生成合成内容类型,但已勾选类型的隐式标识信息提供不全。(如勾选了“文本+视频”,仅提供了显示标识截图,未见提供隐式标识截图;或仅提供了“文本”的隐式标识信息,未见提供“视频”的隐式标识信息)参考指南:人工智能生成合成内容标识相关材料(如下二选一):(1)应用未提供文本、音频、图片、视频等人工智能生成合成内容文件的导出或下载等功能,不涉及人工智能生成合成内容文件元数据,需提供:应用内已添加内容显式标识截图;(2)应用提供文本、音频、图片、视频等人工智能生成合成内容文件的导出或下载等功能,涉及人工智能生成合成内容文件元数据,需提供:人工智能生成合成内容标识说明函 。注:如涉及多个人工智能生成合成场景,“人工智能生成合成内容标识说明函”中需提供多个场景下的显式标识和隐式标识详情信息。内容标识相关材料要求相对严苛且专业,准备材料时需更加细心和严谨,我们整理了详细的FAQ和样例,点击《人工智能生成合成内容标识相关材料》 速览。TOP3:授权书什么是授权书?什么场景需要授权书?授权书是由权利拥有方(授权方)出具、授予应用开发者(被授权方)合法使用相关权利(如版权、版号、业务合作资格等)的书面证明文件。当应用的权利或资质不属于开发者本人,或业务依赖第三方授权时就需提供授权书,如版权、软著、版号非开发者所有,涉及银行理财、信用卡、股票行情等合作业务,与政府官方合作,或委托第三方上传应用等。常见不通过场景:(1)授权方、被授权方名称写错字或写反。(2)授权应用名称写错或漏写。(3)授权期限未明示或已过期。(4)个人授权缺手写签名和身份证正反面(5)非直接授权时,中间授权链路不完整(第一重授权必须注明“可再次授权”)(6)游戏类授权书未注明“对快游戏的授权”等。参考指南:授权书应含有授权方、被授权方、授权应用名称、授权细则、授权期限、授权方公章及日期(授权方为个人时,需补充授权方个人手写签名和身份证正反面扫描件),涉及多重授权时需提供清晰完整的授权链路材料。TOP4:《ICP备案或增值电信业务许可证》 先搞懂:这证管什么?依据《中华人民共和国电信条例》等相关要求,经营电信业务必须持证。与多数应用相关的是 B25信息服务业务,主要包括:业务类型      典型场景   信息发布平台和递送为他人提供信息发布平台  信息搜索查询   提供信息检索查询服务     信息社区平台                  论坛、社区、社交平台信息即时交互 私信、聊天、音视频通话 一句话判断:应用为他人提供信息发布、搜索、社区或即时通讯服务,就可能需要办证。四个常见不通过场景:场景1:把ICP备案当许可证ICP备案是“登记”,增值电信许可证是“许可”,两者不能互相替代。该交许可证的只交备案,会无法通过审核。场景2:涉及B25业务但未办证应用含论坛、社区、私信聊天、为第三方提供信息发布平台等功能,未提供许可证会无法通过审核。场景3:许可证覆盖范围不符业务覆盖一个省→省通管局发证;覆盖两个以上省→需跨地区许可证。面向全国用户仅持省内证,可能不够。场景4:通管局说不用办,审核仍不通过各地通管局认定标准存在差异。若通管局已官方明确无需办理,可以申诉,提供官方答复作为举证材料,经核验可豁免该资质。申诉怎么操作?1.获取官方答复:向经营地省通管局咨询,取得书面或可核验的官方答复,明确“无需办理”。2.准备材料:通管局答复截图/文件+应用信息(名称及APPID或包名)及应用业务说明+审核不通过截图。3.提交申诉:通过互动中心召唤人工联系客服说明“已获通管局确认无需办理”,附举证材料等信息,核验后可豁免。TOP5:《互联网信息服务算法备案》 为什么上榜?AI应用爆发后,算法备案成了新的高频问题点,很多开发者还没意识到需要它。常见不通过场景:(1)应用含生成式AI功能,但未提供算法备案。(2)提供了备案,但备案类型不是“生成合成类”,或算法应用场景与应用场景不相符。(算法场景描述需与应用功能相符)(3)涉及合作方算法时,未提供合作协议或协议中未注明算法名称/备案编号等。(4)涉及合作方算法时,合作协议期限不明等。参考指南:只要应用含有AI生成/合成类功能(文本、图片、音视频等),需提供互联网信息服务算法备案系统首页备案查询结果页面截图(算法备案查询网址:https://beian.cac.gov.cn/#/home)涉及技术服务或其他辅助业务合作的(即接入的是第三方算法/大模型等场景),需提供合作方的算法备案(算法备案类型为:生成合成类)以及双方合作协议(协议需含【算法名称】或【备案编号】相关内容),最后一定要检查备案类型和合作协议是否正确与完整。资质问题不可怕,怕的是不知道问题在哪。希望这份TOP5能帮您提前排查规避一些问题,做好上架前准备,顺利通过审核。如果你还遇到过其他“奇葩”不通过问题,欢迎评论区补充,我们一起探讨!

评论51

浏览 1.5k

发布于6天前
Jay
Lv2
华为的壁纸扩展有时候扩展出来挺一般的,还有一些壁纸一直不能扩展没有开关,不能像苹果一样,包括部分壁纸的景深效果挺糟糕的不自然,壁纸主题可设计不够多样逻辑不够好用,从hm5到hm7一直没啥优化,不知道什么时候重视一下

评论0

浏览 4

发布于2小时前
Hos学习爱好者
Lv10
到现在为止,我还是没有看明白华为的仓颉编程语言,到底用到哪些场景,现在市面上的所有编程语言都有主要运用领域,比如,python主要是人工智能,java是做网页后台,javascript做前端开发,c语言做底层,大家觉得呢?

评论0

浏览 4

发布于3小时前
王子
Lv7
7.0.0.111 SP12 patch22 补丁包 陆续推送中,没有收到的请耐心等待~没有收到的用户:耐心等待!耐心等待!耐心等待!面朝大海,春暖花开!进线并不会优先推送!感谢大家的配合和支持注:各个型号的更新日志可能有偏差,具体请以实际收到为准

评论2

浏览 13

发布于5小时前
开发者成长助手
Lv5
⏰ 9月积分兑换活动时间:      2026年9月1日10:00:00 - 9月7日23:59:59✍️ 活动规则一个账号每个产品仅限兑换一次,华为内部员工禁止兑换;限量礼品兑完即止,礼品以最终实物为准,图片仅供参考;兑换礼品发货时间:活动结束后30个工作日内根据您填写的寄送地址发出,信息填写务必准确。如超期未收到,可添加社区官方小助手详询;目前暂不支持中国大陆以外地区的积分兑换服务,且礼品仅支持寄送至中国大陆境内地址,感谢您的理解。💡 小贴士点击此处查看积分明细:我的积分积分不够?快去个人中心-任务列表快速获取积分!以上信息如有疑问,可添加社区官方小助手详询: 期待您的参与! 注:活动最终解释权归华为开发者联盟所有

评论299

浏览 17.9k

发布于2026-08-24 05:49
钱成环
Lv4
         现在市面上几乎所有手游,都只有安卓区和苹果区,没有专门的鸿蒙大区。越来越多用户使用华为鸿蒙设备,系统运行流畅、适配越来越完善,却始终没有专属游戏分区,让鸿蒙玩家缺少专属归属感。        我真心希望各大游戏厂商,能够早日开通鸿蒙专属游戏大区。鸿蒙系统纯净安全、运行稳定,完全有实力拥有独立服务器分区,不再依附安卓分区。        最期待鸿蒙大区的专属特色就是充值优惠福利。苹果、安卓平台充值普遍没有太多优惠,而鸿蒙大区可以推出点券折扣、充值返利、专属免费皮肤、新手福利礼包等专属权益。       专属优惠不仅能回馈广大鸿蒙玩家,吸引更多人选择华为设备,还能快速提升鸿蒙生态的知名度和影响力。期待未来每一款热门手游,都能上线独立鸿蒙大区,让鸿蒙玩家拥有专属、优质、实惠的游戏体验!       让华为更加火,用户更多。

评论5

浏览 26

发布于7小时前
HarmonyOS 技术支持工程师
Lv9
更多鸿蒙应用开发场景解决方案请见“行业解决方案”专题页。问题描述场景介绍金融理财应用内的营销活动页常由ArkUI组件与内嵌H5页面混合构成。用户将系统语言切换为英文后,期望整个应用(包括ArkUI页面和内嵌H5页面)均显示英文,而非"半中半英"。本示例基于I18n国际化能力,用一个ArkUI+H5混合的活动页还原这一场景,并通过资源分类与访问完成文本资源化,实现ArkUI与H5混合页面的多语言切换:应用内手动切换:一键转英文、恢复中文,切换后ArkUI与H5全页面文本同步变更。跟随系统语言:读取系统当前语言,同步到ArkUI页面与内嵌H5页面。整套流程由一个可复用的harmonyos-i18nskill驱动,能推广到任意ArkTS项目。效果预览实现思路1. ArkUI文本:rawfile翻译数据文件+运行时取值。skill运行后,源码中不再出现任何硬编码的中文或英文翻译。翻译内容存储在rawfile数据文件中(zh_strings.json和en_strings.json),由skill从资源文件自动生成,与代码完全解耦。loadRawFile()方法通过resourceManager.getRawFileContent()运行时加载rawfile,util.TextDecoder解码后存入@State。t(key)按this.lang从对应语言map中取值。切换语言时只改this.lang,@State自动触发UI刷新。新增语言只需添加一个rawfile文件,源码零改动。cid:link_8/blob/main/entry/src/main/ets/pages/MixedPage.ets&language=ArkTS&solution=i18n_runtime&indent=22. H5文本:data-i18n标记+JS对照表。H5页面(mixed_page.html)给每个可翻译节点打上data-i18n="key"属性,内部维护一份I18N对照表。setLang(lang)函数遍历所有[data-i18n]节点,按key和语言查表替换textContent。这套机制独立于ArkUI侧,H5自己也能切换语言。cid:link_8/blob/main/entry/src/main/resources/rawfile/mixed_page.html&language=HTML&solution=h5_i18n&indent=23. 跨端locale桥接。ArkUI侧通过Web组件的WebviewController.runJavaScript("setLang('en')")调用H5暴露的全局函数,把当前语言推过去。H5收到后执行自身的语言切换。onPageEnd回调里也会同步一次当前语言,确保H5加载完成后立即与ArkUI保持一致。cid:link_8/blob/main/entry/src/main/ets/pages/MixedPage.ets&language=ArkTS&solution=notify_h5&indent=24. 跟随系统语言能力接入。页面接入了I18n模块(@ohos.i18n),提供"跟随系统语言"能力。点击该按钮后,调用I18n.System.getSystemLanguage()读取系统当前语言(形如zh-Hans-CN),按前缀判断中文或英文,同步到页面状态并通知H5。cid:link_8/blob/main/entry/src/main/ets/pages/MixedPage.ets&language=ArkTS&solution=follow_system&indent=25. skill的四步流程。harmonyos-i18n skill把上述经验固化成可推广的流程:AST扫描提取——用TypeScript Compiler API解析.ets语法树,定位文本展示位的字符串字面量,禁止用正则做主提取。生成key+翻译——按{页面}_{语义}命名,去重,模板串拆成%d/%s占位符。写资源文件+翻译数据文件——base/zh_CN放中文值,en_US放英文值(资源格式,供$r()使用);同时自动生成rawfile/zh_strings.json和en_strings.json(键值格式,供运行时加载做应用内手动切换)。替换源码——Text('确定')变Text($r('app.string.confirm')),变量赋值改Resource类型,ForEach数据源改Resource[]。skill还规定了闭环验证:静态复扫确认代码区零中文残留,UiTest运行时遍历所有页面检测渲染出来的中文字符(英文locale下任何中文都是漏译),H5/三方框架按locale桥接规范单独处理。环境准备本示例基于DevEco Studio 6.1.1 Release版本进行编译运行。本示例基于API Version 24 Release版本进行开发与验证。工程目录├──skills │ └──harmonyos-i18n │ ├──SKILL.md // 可复用多语言化skill,中文版(四步流程+验证规范) │ └──SKILL.en.md // 可复用多语言化skill,英文版 ├──AppScope │ └──resources/base/element/string.json // 应用级资源 ├──demo │ └──mixed_page_report.md // 示例代码转换结果报告 ├──entry/src/main │ ├──ets │ │ ├──entryability │ │ │ └──EntryAbility.ets // 示例代码应用入口,加载pages/MixedPage │ │ └──pages │ │ └──MixedPage.ets // 示例代码混合演示页(ArkUI+H5,三种切换方式) │ ├──resources │ │ ├──base/element │ │ │ └──string.json // 示例代码默认中文资源(跟随系统语言切换) │ │ ├──zh_CN/element │ │ │ └──string.json // 示例代码中文资源(跟随系统语言切换) │ │ ├──en_US/element │ │ │ └──string.json // 示例代码英文资源(跟随系统语言切换) │ │ └──rawfile │ │ ├──mixed_page.html // H5促销卡片(data-i18n+JS对照表) │ │ ├──zh_strings.json // 示例代码中文翻译数据(运行时加载,手动切换) │ │ └──en_strings.json // 示例代码英文翻译数据(运行时加载,手动切换) │ └──module.json5 ├──build-profile.json5 └──oh-package.json5参考文档@ohos.i18n (国际化-I18n)系统语言与区域资源分类与访问解决方案详细内容见应用内多语言设置解决方案)

评论1

浏览 14

发布于9小时前
i凯凯
Lv1
手机屏幕出现一个透明框框 一开始很小后面变大了 无法去除

评论6

浏览 27

发布于9小时前
社区运营
Lv10
各位鸿蒙开发者,1024 程序员节如期而至。致敬每一位深耕代码、共建生态的开发者!我们打造了一场专属于鸿蒙开发者的技术盛宴,涵盖七大板块:开发者风采展播、话题互动、技术征文、专题资源、学习赋能、内容精选、线下交流。本帖一站汇总所有活动入口与成长资源,方便大家快速查阅与参与。📋活动总览・一键速览活动板块核心亮点🏆2026 鸿蒙开发者社区牛人荣誉加冕,见证开发者高光时刻💬1024 互动话题轻松发帖参与,赢取限定周边礼品✍️鸿蒙主题技术征文多赛道同步开启,记录实战经验,输出技术价值📚 HarmonyOS 7(API 26) 专属资源包新能力解读 + 开发工具 + 实战案例一站式获取✨优质文章展播精选高影响力技术干货,覆盖全开发场景📈赋能提升|课程与高级认证搭建体系化成长路径,从入门到高阶实现能力进阶🤝线下活动面对面深度交流,碰撞技术思路🏆2026 鸿蒙开发者社区牛人这一年,他们写下了最动人的代码。每一位深耕鸿蒙生态的开发者,都是推动生态向前的核心驱动力,致敬在技术分享、生态共建中做出突出贡献的开发者。经过阶段性数据的沉淀与综合评估,官方社区已发布多个开发者榜单;各三方技术社区按自有标准独立评选,也发布了对应的榜单。他们是技术创新的先行者、知识分享的践行者、社区互助的温暖力量。1、官方社区榜单:1024程序员节-HarmonyOS开发者社区贡献榜单社区牛人2026年7月HarmonyOS 开发者社区贡献榜单2、合作社区榜单:51CTO:​​2026社区明星榜单 CSDN:HarmonyOS开发者社区 · 三大单项奖开源中国:社区牛人风采展示人人都是产品经理:社区牛人中小企业IT网:牛人风采👏 您也想成为明年的社区牛人吗?从现在开始,在社区积极分享技术、互助答疑、创作优质内容,下一个上榜的,或许就是你。💬1024 互动话题这一年,我们在社区交流碰撞、畅聊故事。1024 程序员节既是技术交流的盛会,也是开发者轻松分享、畅聊故事的舞台。我们联合多家社区准备了多维度互动话题,晒出您的开发日常与技术成长,有机会赢取限定周边礼品。📅 话题日历(信息持续更新中)社区话题主题奖品/激励参与入口官方社区「我与鸿蒙这一年」HarmonyOS文创礼盒点击参与开源中国「我最满意的一段代码」HarmonyOS定制礼盒点击参与CSDN「还记得你的第一行鸿蒙代码吗」HarmonyOS定制礼盒点击参与51CTO「追光时刻|讲你和代码的故事」小度智能音箱/电脑背包/社区声望值点击参与InfoQ「1024,聊聊你和鸿蒙的故事」HarmonyOS定制礼盒点击参与中小企业IT网「码上接招|晒踩坑、聊难题、一起解题」最高可获200元京东卡点击参与人人都是产品经理「代码改变的事」鸿蒙官方周边 & 2026 AI 产品大会深圳站直播及回看权益点击参与✍️鸿蒙主题技术征文这一年,这些实战经验值得被记录。真实的一线开发实战经验,是社区最有价值的技术资产。本次 1024 同步开启多赛道技术征文,邀请您记录开发历程、分享踩坑心得、输出解决方案。1、征文方向:围绕 HarmonyOS 7 新特性实践、折叠屏与多设备适配、AI 能力接入、三方框架集成、上架审核排障、性能优化等方向创作。活动名称主办方截止时间入口共创季・征文稿事节第 3 期|1024 程序员节特别场CSDN11月20日投递作品1024·向光而行·码向未来51CTO10月30日投递作品1024·向光而行·码向未来开源中国10月24日投递作品让鸿蒙应用,玩出新可能!InfoQ11月23日投递作品1024码上尝鲜,解锁 HarmonyOS 7 新玩法中小企业IT网10月31日投递作品📚 HarmonyOS 7(API 26) 专属资源包这一年,HarmonyOS 7(API 26) 带来了这些新的可能。AI 图像超分到 3DGS 端侧重建,从平行视界体验升级到 CLI 工具链效率升级,每一项新能力都在重新定义移动开发的想象。这里为您整理了官方能力解读、适配实操指南、AI 开发工具、三方框架参考等全套学习资源,助力快速上手、高效落地。1、HarmonyOS 7(API 26) 官方新能力解读 & 实战案例合集 汇总官方核心能力解读与适配攻略,同时精选优质开发者实战案例,助力开发者低门槛、高效率打造创新鸿蒙应用。👉直达完整合集2、新能力总览系统化呈现智能化、空间化、全场景交互、性能提升等全维度特性,清晰掌握技术边界、能力优势与应用创新方向。👉立即探索新能力3、折叠屏与多设备适配专题指南面向多种设备形态与使用场景,掌握通用适配方法,让应用在不同状态下保持流畅一致的体验。👉查看适配指南4、HarmonyOS 开发助手“多设备适配”利用AI完成多设备适配开发事半功倍覆盖六大领域、60+场景全覆盖 ,针对原生 ArkTS 工程按五步闭环执行,自动判断原因并给出修改方案。👉上手 AI 工具5、HarmonyOS 三方框架文档资料总结涵盖React Native、Flutter、KMP&CMP等多种跨平台框架的技术架构、演进历史、适用场景和企业案例等多方面内容,为开发者选型提供多维度的技术参考。👉查阅框架文档✨优质文章展播这一年,社区沉淀了大量来自开发者一线的实战干货。内容覆盖 HarmonyOS 7 新特性落地、折叠屏与多设备适配、AI 能力集成、性能优化、上架审核避坑、开发工具实战等全开发场景。所有内容均源自真实项目的踩坑复盘与落地验证,帮您避开重复试错,直接复用成熟方案。1、官方社区精选合集:👉每日好文推荐2、合作社区精选:51CTO精品专区合集:👉​​鸿蒙精华帖合集·1024特辑CSDN HarmonyOS开发者社区:👉​​优质文章展播开源中国:👉优质文章展播中小专栏精选:👉优质文章展播人人都是产品经理:👉鸿蒙实战好文中小企业IT网:👉优质文章展播📈课程与高级认证这一年,我们搭建了完整的成长进阶路径。围绕鸿蒙开发者全周期成长路径,我们搭建了从入门到高阶的体系化课程,配套官方权威认证体系,系统化提升鸿蒙全场景开发、调试与创新落地能力。1、开发者学堂|分层课程体系,全阶段能力赋能提供由浅入深的培训课程以及配套 Codelabs 实操指导,覆盖新特性、AI、3DGS、折叠屏与多设备适配等核心方向,满足不同阶段开发者的学习需求。👉进入开发者学堂2、官方权威认证|能力标准化,持证证明实力涵盖基础、高级、专家三级 HarmonyOS 应用开发者认证,匹配不同职业阶段能力要求,助力开发者职业进阶。 👉 查看认证详情🤝线下技术活动:这一年,我们也在线下相聚,深度碰撞技术思路。除了线上丰富的内容与活动,我们同步筹备了线下技术交流活动,链接行业同好,面对面交流技术、拓展人脉。1、官方线下活动:HDD·HarmonyOS创新论坛(穿戴专场):聚焦穿戴产品与商业化趋势、智能穿戴平台架构、运动健康数据平台开放能力、手机与穿戴的数据互通,以及表盘生态与智能交互等内容。 ⏰ 时间:10月23日 14:00-18:00📍 地点:北京・三里屯 CHAO 酒店🔗 报名入口:👉立即报名参会2、合作社区线下活动:开源中国:2026 上海开源软件应用创新大赛 - 决赛路演⏰ 时间:10 月 29 日📍  地点:上海人工智能小镇服务中心 3 楼🔗 报名入口:👉立即报名参会 开源中国:2026 GOTC 峰会(全球开源技术峰会)⏰  时间:11 月 13-14 日📍  地点:北京亦庄通明湖会展中心🔗 报名入口:👉立即报名参会人人都是产品经理:广州沙龙 | HarmonyOS 7 遇上 AI Agent,产品经理该如何抓住下一轮产品创新机会?⏰ 时间:10月25日 14:00-18:00📍 地点:广州市·天河区·元岗·智汇Park(二期)路演中心🔗 报名入口:👉立即报名参会51CTO:1024 鸿蒙开发者沙龙-上海站⏰  时间:10月18日 13:30-17:35📍  地点:Dialogs(百空间光二仓库店)(上海市静安区光复路195号F305A)🔗 报名入口:👉活动回顾中小企业IT网:“向光而行,码向未来”1024主题线下沙龙(西安站)⏰ 时间:10月18日📍 地点:七方琴茶美学馆(西安市天谷七路899号 陕西省图书馆(高新馆)北门)🔗 报名入口:👉活动回顾更多城市沙龙:陆续筹备中更多开发者活动这一年,还有这些常态化活动持续赋能开发者。除了 1024 专题活动,这些长期开放的成长与激励活动也值得参与,丰厚奖励与成长资源同步解锁。1、HarmonyOS 开发助手挑战活动0 编程基础也可以体验!AI使能,自然语言交互方式,鸿蒙开发变得更简单。👉0 基础上手体验2、社区互助问答活动用代码说话,以答案交友,参与社区答题,赢取 HUAWEI Pura 90 Pro Max、平板等礼品。👉参与答题赢奖3、鸿蒙应用开发者激励计划 2026 完成鸿蒙应用开发并正式上架华为应用市场,即有机会获得现金激励。👉立即报名4、鸿蒙生态赋能资源建设活动 分享技术实战案例与行业解决方案,促进共享与交流,共同构建丰富、系统、开放的HarmonyOS学习资源库,赢取荣誉与 HUAWEI Mate 80 Pro Max 等礼品。👉查看活动详情 🎯 怎么选适合您的玩法这一年,无论您处在哪个阶段,都能找到适合自己的成长路径。🆕 刚接触鸿蒙?从互动话题切入,边玩边熟悉社区氛围,顺手赢取文创周边;同步搭配 HarmonyOS 7 专属资源包入门学习,快速完成从 0 到 1 的上手。💪 已经有实战经验?参与多赛道技术征文,输出您的项目经验与踩坑心得,优质作品可入选优质文章展播,获得全站曝光与流量扶持。🌟 深耕鸿蒙多年?冲击年度社区牛人评选,积累全平台技术影响力;同时参与生态赋能资源建设,携手共建鸿蒙技术生态。📚 想系统进阶?跟随开发者学堂分层课程体系循序渐进学习,拿下官方权威能力认证,完成从入门到专家的全阶段能力进阶。🎁参与互动留言,解锁🎖️ 1024程序员节・鸿蒙开发者限定勋章(2026年)👉前往领取🛑本帖将持续同步更新活动入口与最新动态,建议收藏,方便随时查阅。祝所有鸿蒙开发者 1024 程序员节快乐!这一年,我们并肩执笔、共创共生;下一程,我们继续携手,深耕鸿蒙生态。期待在这里见证更多人的高光时刻!

评论163

浏览 204.6k

发布于2026-10-16 03:47
匿名用户
一、引言:页面跳转,是模块耦合的“重灾区”“A 模块要跳转到 B 模块的页面,就必须 import B 模块的类——模块越多,耦合越重,编译越慢。”这是大型鸿蒙应用面临的典型问题。页面跳转依赖导致模块间硬编码耦合——A 依赖 B,B 依赖 C,C 又依赖 A,形成循环依赖,编译失败。HarmonyOS 提供了 router_map.json 动态路由 和 Navigation 路由栈 两种方案。今天这篇,我们从路由设计 → 动态路由配置 → 路由拦截 → 参数传递,系统拆解鸿蒙应用路由框架的设计方案。二、先搞清楚:两种路由方案方案说明适用场景router(页面路由)通过 URL 字符串跳转简单页面跳转Navigation(路由栈)通过 NavPathStack 管理路由复杂路由、分栏布局router_map.json(动态路由)模块间配置路由表多模块解耦推荐:多模块项目用 router_map.json + Navigation,单模块项目用 router 即可。三、Step 1:配置动态路由3.1 在模块中创建路由表每个模块(HSP/HAR)维护自己的 router_map.json:json// features/profile/src/main/resources/base/profile/router_map.json { "routerMap": [ { "name": "ProfilePage", "pageSourceFile": "src/main/ets/pages/ProfilePage.ets", "buildFunction": "ProfilePageBuilder", "description": "个人中心页面" }, { "name": "SettingsPage", "pageSourceFile": "src/main/ets/pages/SettingsPage.ets", "buildFunction": "SettingsPageBuilder", "description": "设置页面" } ] }字段说明:字段说明name路由名称(全局唯一)pageSourceFile页面源文件路径buildFunction页面构建函数名description路由描述3.2 在 module.json5 中注册路由表json{ "module": { "name": "profile", "type": "shared", "metadata": [ { "name": "ohos.router.map", "resource": "$profile:router_map" } ] } }3.3 页面构建函数typescript// ProfilePage.ets @Builder export function ProfilePageBuilder(name: string, param: Object) { ProfilePage() } @Component struct ProfilePage { build() { Column() { Text('个人中心').fontSize(24) } } }四、Step 2:使用动态路由跳转4.1 通过路由名称跳转typescriptimport { router } from '@kit.ArkUI'; // 通过路由名称跳转(无需 import 目标模块) async function navigateToProfile(): Promise<void> { try { await router.pushNamedRoute({ name: 'ProfilePage', params: { userId: '12345', from: 'home' } }); console.log('✅ 跳转成功'); } catch (err) { console.error('跳转失败', err); } }核心优势:调用方不需要 import 目标模块——只需要知道路由名称,模块间彻底解耦。4.2 获取路由参数typescript// 在目标页面中获取参数 @Component struct ProfilePage { aboutToAppear() { const params = router.getParams() as Record<string, string>; const userId = params?.userId; const from = params?.from; console.log(`用户ID: ${userId}, 来源: ${from}`); } build() { Column() { Text('个人中心').fontSize(24) } } }五、Step 3:Navigation 路由栈Navigation 是鸿蒙推荐的复杂路由方案——支持分栏、路由栈管理、拦截器。5.1 定义路由栈typescript@Entry @Component struct MainPage { @Provide('navPathStack') navPathStack: NavPathStack = new NavPathStack(); build() { Navigation(this.navPathStack) { // 首页内容 Column() { Button('跳转到详情页') .onClick(() => { this.navPathStack.pushPath({ name: 'DetailPage', param: { id: '123' } }); }) } } .navDestination(this.pageMap) .mode(NavigationMode.Auto) } // 路由映射 @Builder pageMap(name: string, param: Object) { if (name === 'DetailPage') { DetailPage({ id: (param as Record<string, string>).id }) } else if (name === 'ProfilePage') { ProfilePage() } } }5.2 路由栈操作typescript// 入栈 navPathStack.pushPath({ name: 'DetailPage', param: { id: '123' } }); // 出栈 navPathStack.pop(); // 替换栈顶 navPathStack.replacePath({ name: 'NewPage', param: {} }); // 清空栈 navPathStack.clear(); // 获取栈大小 const size = navPathStack.size(); // 获取所有路由 const allPaths = navPathStack.getAllPathName();六、Step 4:路由拦截器路由拦截器用于登录校验、权限校验、埋点统计等场景。typescript// 路由拦截器 class RouteInterceptor implements NavigationInterceptor { // 拦截入栈 onPush(pathInfo: NavPathInfo): boolean { console.log(`🚦 拦截跳转: ${pathInfo.name}`); // 需要登录的页面 if (this.requiresLogin(pathInfo.name)) { const isLoggedIn = checkLoginStatus(); if (!isLoggedIn) { console.warn('⚠️ 未登录,拦截跳转'); // 跳转到登录页 navPathStack.pushPath({ name: 'LoginPage' }); return false; // 拦截 } } return true; // 放行 } // 拦截出栈 onPop(pathInfo: NavPathInfo): boolean { return true; } private requiresLogin(pageName: string): boolean { const loginPages = ['OrderPage', 'ProfilePage', 'SettingsPage']; return loginPages.includes(pageName); } } // 注册拦截器 Navigation(this.navPathStack) .interceptor(new RouteInterceptor())七、Step 5:路由参数传递7.1 简单参数typescript// 传递 navPathStack.pushPath({ name: 'DetailPage', param: { id: '123', title: '商品详情', price: 99.9 } }); // 接收 @Component struct DetailPage { @Prop id: string = ''; @Prop title: string = ''; @Prop price: number = 0; build() { Column() { Text(this.title).fontSize(24) Text(`价格: ¥${this.price}`).fontSize(16) } } }7.2 复杂对象typescript// 定义参数类型 class ProductParam { id: string = ''; title: string = ''; price: number = 0; images: string[] = []; } // 传递 const param = new ProductParam(); param.id = '123'; param.title = '商品详情'; navPathStack.pushPath({ name: 'ProductDetailPage', param: param }); // 接收 @Component struct ProductDetailPage { aboutToAppear() { const param = this.navPathStack.getParamByName('ProductDetailPage')[0] as ProductParam; console.log(`商品ID: ${param.id}`); } }八、完整示例:多模块路由框架typescript// common/router/RouterManager.ets export class RouterManager { private static navPathStack: NavPathStack | null = null; // 初始化路由栈 static init(navPathStack: NavPathStack): void { this.navPathStack = navPathStack; } // 跳转 static push(name: string, param?: Object): void { if (!this.navPathStack) { console.error('路由栈未初始化'); return; } // 登录校验 if (this.requiresLogin(name) && !this.isLoggedIn()) { this.navPathStack.pushPath({ name: 'LoginPage' }); return; } // 埋点 this.trackPageView(name); // 跳转 this.navPathStack.pushPath({ name, param }); } // 返回 static pop(): void { this.navPathStack?.pop(); } // 替换 static replace(name: string, param?: Object): void { this.navPathStack?.replacePath({ name, param }); } private static requiresLogin(name: string): boolean { const loginPages = ['OrderPage', 'ProfilePage', 'SettingsPage']; return loginPages.includes(name); } private static isLoggedIn(): boolean { return AppStorage.get<boolean>('isLoggedIn') || false; } private static trackPageView(name: string): void { console.log(`📊 页面浏览: ${name}`); } } // 使用 RouterManager.push('DetailPage', { id: '123' });九、常见踩坑点坑1:路由名称冲突两个模块定义了同名路由,系统无法确定跳转哪个。✅ 解法:路由名称全局唯一,建议加模块前缀(如 Profile_DetailPage)。坑2:router_map.json 路径配置错误页面文件路径写错,跳转失败。✅ 解法:路径相对于模块根目录,确认 pageSourceFile 正确。坑3:模块没有注册 router_map跳转时找不到路由。✅ 解法:在 module.json5 中注册 ohos.router.map metadata。坑4:Navigation 拦截器没有返回 boolean拦截器不返回 true/false,跳转行为异常。✅ 解法:onPush 和 onPop 必须返回 boolean。坑5:参数传递用了不可序列化的对象传递了包含函数的对象,跳转失败。✅ 解法:只传递可序列化的数据(基本类型、普通对象、数组)。十、结语路由框架是大型鸿蒙应用的基础设施——动态路由解耦模块、Navigation 管理路由栈、拦截器统一处理。从动态路由配置 → Navigation 路由栈 → 路由拦截 → 参数传递,这套方案覆盖了多模块应用的路由需求。核心原则:路由名称全局唯一、模块间不 import、拦截器统一处理。记住三个核心原则:用 router_map.json 解耦——模块间不互相 import路由名称全局唯一——加模块前缀拦截器统一处理——登录、权限、埋点

评论0

浏览 5

发布于9小时前
匿名用户
一、引言:启动初始化,是冷启动的“隐形杀手”“应用冷启动 2 秒,其中 1.2 秒花在初始化上——数据库、网络、SDK、路由……全部串行执行。”这是很多应用冷启动慢的根本原因。初始化任务全部堆在 AbilityStage 或 UIAbility 的 onCreate 中串行执行,每一个任务都要等前一个完成,启动时间被无限拉长。HarmonyOS 提供了 AppStartUp 启动框架,专门解决这个问题——任务编排 + 依赖管理 + 并行调度。今天这篇,我们从任务定义 → 依赖配置 → 并行调度 → 性能对比,系统拆解 AppStartUp 的使用方案。二、先搞清楚:AppStartUp 的核心思想概念说明StartupTask启动任务,每个任务是一个独立的初始化单元Dependency依赖关系,任务可以依赖其他任务Executor执行器,AppStartUp 自动调度任务执行Parallel无依赖的任务并行执行核心思想:把初始化拆成独立任务,按依赖关系编排,无依赖的任务并行执行。text串行初始化(传统方式): TaskA(200ms) → TaskB(150ms) → TaskC(100ms) → TaskD(50ms) 总耗时:500ms 并行初始化(AppStartUp): TaskA(200ms) ─┬─→ TaskC(100ms) TaskB(150ms) ─┘ TaskD(50ms) ───────────────── 总耗时:约 300ms(TaskA + TaskC)三、Step 1:定义启动任务每个启动任务需要继承 StartupTask,实现 init 方法。typescriptimport { StartupTask, common } from '@kit.AbilityKit'; // 任务1:初始化日志 export class InitLoggerTask extends StartupTask { async init(context: common.AbilityStageContext): Promise<void> { console.log('📝 初始化日志系统...'); // 模拟耗时 50ms await new Promise(resolve => setTimeout(resolve, 50)); console.log('✅ 日志系统初始化完成'); } } // 任务2:初始化网络 export class InitNetworkTask extends StartupTask { async init(context: common.AbilityStageContext): Promise<void> { console.log('🌐 初始化网络模块...'); await new Promise(resolve => setTimeout(resolve, 100)); console.log('✅ 网络模块初始化完成'); } } // 任务3:初始化数据库 export class InitDatabaseTask extends StartupTask { async init(context: common.AbilityStageContext): Promise<void> { console.log('💾 初始化数据库...'); await new Promise(resolve => setTimeout(resolve, 200)); console.log('✅ 数据库初始化完成'); } } // 任务4:加载用户配置(依赖数据库) export class LoadUserConfigTask extends StartupTask { async init(context: common.AbilityStageContext): Promise<void> { console.log('⚙️ 加载用户配置...'); await new Promise(resolve => setTimeout(resolve, 80)); console.log('✅ 用户配置加载完成'); } } // 任务5:初始化推送 SDK export class InitPushTask extends StartupTask { async init(context: common.AbilityStageContext): Promise<void> { console.log('📬 初始化推送 SDK...'); await new Promise(resolve => setTimeout(resolve, 150)); console.log('✅ 推送 SDK 初始化完成'); } }四、Step 2:配置启动任务在 resources/base/profile/startup_config.json 中配置任务和依赖关系:json{ "startupTasks": [ { "name": "InitLoggerTask", "srcEntry": "./ets/startup/InitLoggerTask.ets", "dependencies": [], "runOnMainThread": false }, { "name": "InitNetworkTask", "srcEntry": "./ets/startup/InitNetworkTask.ets", "dependencies": [], "runOnMainThread": false }, { "name": "InitDatabaseTask", "srcEntry": "./ets/startup/InitDatabaseTask.ets", "dependencies": [], "runOnMainThread": false }, { "name": "LoadUserConfigTask", "srcEntry": "./ets/startup/LoadUserConfigTask.ets", "dependencies": ["InitDatabaseTask"], "runOnMainThread": false }, { "name": "InitPushTask", "srcEntry": "./ets/startup/InitPushTask.ets", "dependencies": [], "runOnMainThread": false } ] }配置字段说明:字段说明name任务名称(唯一)srcEntry任务文件路径dependencies依赖的任务列表runOnMainThread是否在主线程执行(默认 false)依赖关系图:textInitLoggerTask ──────────────────────┐ InitNetworkTask ─────────────────────┤ InitDatabaseTask ──→ LoadUserConfigTask InitPushTask ────────────────────────┘执行顺序:InitLoggerTask、InitNetworkTask、InitDatabaseTask、InitPushTask 并行执行LoadUserConfigTask 等 InitDatabaseTask 完成后执行五、Step 3:在 module.json5 中注册json{ "module": { "name": "entry", "type": "entry", "srcEntry": "./ets/MyAbilityStage.ets", "metadata": [ { "name": "ohos.ability.startup", "resource": "$profile:startup_config" } ] } }六、Step 4:在 AbilityStage 中触发typescriptimport { AbilityStage } from '@kit.AbilityKit'; export default class MyAbilityStage extends AbilityStage { onCreate(): void { console.log('🚀 AbilityStage 创建,开始执行启动任务'); // AppStartUp 会在 AbilityStage 创建后自动执行配置的任务 // 无需手动调用 } }⚠️ 注意:AppStartUp 会在 AbilityStage 创建后自动执行,无需手动触发。七、Step 5:性能对比测试环境:5 个任务,模拟耗时分别为 50ms、100ms、200ms、80ms、150ms。方式执行顺序总耗时串行初始化Logger → Network → Database → UserConfig → Push580msAppStartUp 并行Logger、Network、Database、Push 并行;UserConfig 等 Database280ms提升—约 52%日志输出对比:text串行初始化: 📝 初始化日志系统... (50ms) 🌐 初始化网络模块... (100ms) 💾 初始化数据库... (200ms) ⚙️ 加载用户配置... (80ms) 📬 初始化推送 SDK... (150ms) 总耗时:580ms AppStartUp 并行: 📝 初始化日志系统... (50ms) 🌐 初始化网络模块... (100ms) 💾 初始化数据库... (200ms) 📬 初始化推送 SDK... (150ms) ⚙️ 加载用户配置... (80ms) ← 等 Database 完成后执行 总耗时:280ms八、进阶:启动任务的分级策略不是所有任务都需要在启动时执行。建议把任务分为三级:级别执行时机任务示例高优先级启动时立即执行日志、崩溃采集、核心配置中优先级首帧渲染后执行网络、数据库、用户配置低优先级空闲时执行推送、统计、广告 SDKAppStartUp 只负责高优先级任务,中低优先级任务用其他方式延迟执行:typescript// 低优先级任务:延迟到首帧后执行 export default class EntryAbility extends UIAbility { onWindowStageCreate(windowStage: window.WindowStage): void { windowStage.loadContent('pages/Index', (err) => { if (!err) { // 首帧渲染完成后,执行低优先级任务 this.initLowPriorityTasks(); } }); } private async initLowPriorityTasks(): Promise<void> { // 延迟 500ms 执行 setTimeout(async () => { await this.initPushSDK(); await this.initAnalytics(); }, 500); } }九、常见踩坑点坑1:把所有任务都塞进 AppStartUp低优先级任务也放在启动时执行,启动时间没减少。✅ 解法:只放高优先级任务,低优先级任务延迟执行。坑2:依赖关系配置错误LoadUserConfigTask 依赖了 InitDatabaseTask,但配置里漏了。✅ 解法:仔细检查依赖关系,确保有依赖的任务都配置了 dependencies。坑3:任务在主线程执行runOnMainThread: true 的任务会阻塞主线程。✅ 解法:非必要不在主线程执行,设为 false。坑4:任务没有捕获异常某个任务失败导致整个启动流程中断。✅ 解法:任务内部用 try-catch 包裹,失败时降级处理。坑5:任务之间有隐式依赖两个任务没有配置依赖,但代码上有先后顺序要求。✅ 解法:显式配置依赖,不要依赖执行顺序的“巧合”。十、结语AppStartUp 是鸿蒙应用冷启动优化的核心工具——任务编排 + 依赖管理 + 并行调度,把串行初始化变成并行执行。从任务定义 → 依赖配置 → 并行调度 → 性能对比,这套方案可以让冷启动时间减少 30%-50%。核心原则:只放高优先级任务、依赖关系要显式、任务要捕获异常。记住三个核心原则:只放高优先级任务——低优先级延迟执行依赖关系要显式——别靠“巧合”任务要捕获异常——一个失败不影响全局

评论0

浏览 6

发布于9小时前
匿名用户
Lv1
微信被自动更新到了最新版本了,有什么办法退回到微信8.0.23.33以下版本吗

评论3

浏览 19

发布于10小时前
HarmonyOS 开发者中心官方
Lv7
亲爱的开发者伙伴:       HarmonyOS 开发者中心迎来全新升级,欢迎进入平台体验!(仅限PC端登录)       本次升级将原开发者联盟管理中心与 AppGallery Connect 的功能深度融合,按照开发者工作旅程重新整合,打造一站式开发者服务平台。你可以在这里统一管理账号、权限、财务和应用,无需两个平台反复切换,让整体工作流程更加顺畅高效。       本次升级不影响现有的工作流,大部分服务操作逻辑保持原样,相信你一定可以快速上手。       接下来,让我们带你快速了解新平台功能吧!       你可以点击下方查看平台介绍视频一、本次更新亮点整体框架重构平台按工作流拆分为「开发者管理」和「应用管理」两大目录层级,分别承载开发者账号、权限、财务管理与应用全生命周期服务,结构更清晰,操作更直观。还前置【智能体管理】即“小艺开放平台”入口,有该账号下平台权限的,点击即可直接打开。菜单优化整合优化整合了关联业务菜单,工作流导向更加直观清晰,同时重组了总览页卡片功能,支持查看财务、创建/管理应用、跟踪待办信息以及快速访问常用服务。技术支持升级原互动中心与消息中心融合升级为全新互动中心,消息分类排列重组,查找更便捷。体验优化新功能平台新增菜单收藏、搜索、一键收起/展开、右键打开新窗口等实用功能,操作更灵活高效。二、开发者管理:基础业务一站搞定在[开发者管理]目录下,你可以管理你的基础业务。包括查看总览、管理团队人员、应用开发的基础设施资源、财务与结算等。其中[用户与访问]主要为[管理中心-开发者中心]和[AGC-用户与访问]下,与账号、权限、隐私声明相关功能,你可以在这里管理好团队人员。[ID、证书和Profile]主要为[AGC-证书、APP ID和Profile]与[管理中心-API库]下,与应用基础设计资源相关功能,你可以在这里准备好应用开发的基础设施资源。[财务结算]主要为[管理中心-开发者中心][管理中心-我的账户]和[AGC-账户中心]下,与财务、收益、结算、账单相关功能,你可以在这里管理费用与收益。三、应用管理:覆盖应用全生命周期在[应用管理]目录,你可以在这里完成应用全生命周期的工作,覆盖开发、分发、质量和运维、推广运营、盈利、分析各个阶段。[分发]主要为[AGC-APP和元服务-分发]下的功能,你可以在这里完成应用分发阶段工作,统一管理应用从测试发布到公开发布的全流程及相关配套服务。[开放能力配置]主要为[AGC-开发与服务]下[云开发]和[构建]的功能,你可以在这里完成应用开发阶段工作,针对开发阶段的各个开放服务,完成配置管理。[质量和运维]主要为[AGC-开发与服务]下[质量]的功能,你可以在这里使用应用质量&运维相关服务,包括应用上架运行之前的云测试、云调试等质量测试服务,以及应用上架运行之后的性能与稳定性运维监测服务。[推广运营]主要为[AGC-开发与服务]下[增长]和[AGC-APP和元服务-运营]下的功能,你可以在这里使用应用运营相关服务,覆盖支持用户拉新、促活、留存、召回、增长、触达等。[盈利]主要为[AGC-开发与服务]下[盈利]的功能,你可以在这里使用应用变现相关服务,包括应用内购买、支付、订阅等。[分析]主要为[AGC-分析]下的功能,你可以在这里查看应用数据分析。包括整体数据概览、分发运营质量数据和用户画像数据等。注:当你选择的是元服务场景时,[应用管理]目录菜单内将 [AGC-元服务一站式平台]的菜单做了更新适配。       为了在操作平台时,可以达到旅程式、沉浸式的体验,我们将管理中心和AGC的部分菜单进行了优化整合,让菜单命名更清晰直观、贴合业务。整体工作流程指导您可以点击此处查看。四、技术支持全面升级平台内嵌“AI助手”,点击顶部图标即可快速触发。原[AGC-互动中心]与[开发者中心-消息中心]融合升级为新互动中心,消息按类别重新排列,查找更便捷。具体消息的分类同原先的应用关系如下:五、更多体验优化新功能我们在新平台内也新增了一些体验优化的小功能点:我们已针对全网后的咨询问题梳理了FAQ,点击查看更快上手!立即开启你HarmonyOS 开发者中心新体验吧!更详细分场景的指导手册可点击此处跳转。我们将持续完善平台应用场景、优化平台体验,如果你有什么建议和吐槽,欢迎加入我们HarmonyOS 开发者中心交流群,我们非常想要听到你的声音!我们期待在新版本中与你再次相遇,共创更多可能!

评论59

浏览 19.4k

发布于2026-10-13 03:29
雄关漫道
Lv10
BLE 开发高频痛点:改完 connInterval、supervisionTimeout,还是毫无规律随机掉线。分不清是外设从机主动断开、射频干扰,还是鸿蒙后台功耗策略、蓝牙栈节流限制。本文给一套判定流程、日志识别规则和 GATT 重连稳定代码。判断流程抓蓝牙 HCI 日志,看 disconnect reason:0x08、0x13:外设主动断开,优先排查固件休眠、供电、看门狗;0x3B,日志看到系统改写了你设置的连接间隔:鸿蒙系统功耗管控,后台会强制压低蓝牙频率,属于平台频控;对照测试:同一外设连苹果 / 安卓,如果同样频繁掉线 = 外设问题;鸿蒙独有的掉线,就是系统蓝牙策略限制;hiTrace 看蓝牙调度:后台应用 Notify 上报速率被限流,就是系统管控。稳定 GATT 客户端代码(复用实例,避免重复创建泄漏)import { ble } from '@kit.ConnectivityKit' @Sendable export class BleGattClient { private client: ble.GattClient | null = null private deviceId: string = "" async connect(deviceId:string){ if(this.client){ // 复用实例,不重复新建 await this.client.close() } this.deviceId = deviceId this.client = await ble.createGattClient() this.client.onBLEConnectionStateChange((state)=>{ if(state === ble.GattConnectionState.STATE_DISCONNECTED){ console.info("BLE断开,准备重连") this.reconnect() } }) await this.client.connect(deviceId, { autoConnect: true }) } private async reconnect(){ try{ await this.connect(this.deviceId) }catch(e){ console.error("重连失败", JSON.stringify(e)) } } }优化要点不要设置极小连接间隔,应用切后台后鸿蒙会强制降速;高频上报不要疯狂 Notify,批量打包上报;supervisionTimeout 适当放大,给外设休眠留余量;严禁每次重连新建 GattClient,极易资源泄漏、状态错乱。

评论1

浏览 7

发布于11小时前
雄关漫道
Lv10
元服务内存管控严苛,切后台很容易被系统回收,重新唤起时 Navigation 栈直接重建,pathInfo 携带的路由参数直接丢失。很多同学尝试把参数放 pathInfo 里,onRestore 时机又拿不到完整栈信息。本文不依赖 NavPathStack 自带传参,封装路由快照,页面恢复自动回填,附完整 ArkTS 代码。核心原理NavPathStack 本身是内存对象,进程回收就销毁;不要把业务参数绑在路由栈上。跳转入栈同时写入 AppStorage 保存页面快照(页面名 + 参数),onRestore 回调读取快照、手动重建导航栈;元服务只适合存小参数:id、查询条件、页码,大业务数据走本地缓存。// 路由快照管理单例 class RouteSnapshotMgr { static getInstance(): RouteSnapshotMgr { if (!RouteSnapshotMgr.ins) RouteSnapshotMgr.ins = new RouteSnapshotMgr(); return RouteSnapshotMgr.ins; } private static ins: RouteSnapshotMgr // 保存栈快照,只存轻量参数 saveSnapshot(stack: NavPathStack) { const snapshot = stack.getAllPathName().map((name, idx) => { return { pageName: name, params: AppStorage.get(`route_${name}_${idx}`) } }) AppStorage.setOrCreate('route_snapshot', snapshot) } restoreSnapshot(stack: NavPathStack) { const snapshot = AppStorage.get<Array<{pageName:string, params:Object}>>('route_snapshot') if (!snapshot) return stack.clear() snapshot.forEach(item=>{ stack.pushPathByName(item.pageName, item.params) }) } } // UIAbility onRestore生命周期 onRestore(want: Want, data: AbilityRestoreData): void { super.onRestore(want, data) // 等Navigation就绪后恢复栈 setTimeout(()=>{ RouteSnapshotMgr.getInstance().restoreSnapshot(this.pathStack) },100) } // 页面跳转时同步保存参数 this.pathStack.pushPathByName("DetailPage", {id:"1001"}) AppStorage.setOrCreate("route_DetailPage_0", {id:"1001"})踩坑小结元服务禁止大量持久化,快照只放标识,复杂数据不要存入快照;onRestore 执行时机早于 Navigation 渲染,需要延时或者等 onReady 回调再恢复;页面返回 pop 时同步清理对应快照,防止旧脏数据残留。

评论1

浏览 5

发布于11小时前
杨杰
Lv2
二级菜单为什么几乎都是白色的,为什么不能体现壁纸?比如打开拨号界面,设置界面,以及其他界面,就没有高斯模糊壁纸了。如图给这些界面附上背景,观感是不是会好看很多?

评论4

浏览 12

发布于11小时前
社区运营
Lv10
2026年9月7日,HarmonyOS 7(API 26) 正式发布,在系统空间感与智能化方面迎来重磅升级,给应用带来更加广阔的想象空间。为了帮助大家系统地掌握版本核心特性与落地实践,快速上手完成适配,我们将围绕 “AI 开放生态 ➝ 系统与创新升级 ➝ 智能化提效开发” 展开,汇总官方能力解读与适配攻略,同时精选优质开发者实战案例,降低“启动成本”,助力开发者低难度、高效率打造创新的鸿蒙应用。一、Harmony Intelligence AI 开放能力|带你玩转智能生态HarmonyOS 7(API 26) 持续夯实端侧 AI 开放底座,推出 AI 开发套件,全面开放视觉、语音、自然语言处理等系统级 AI 能力。开发者可快速调用相关能力,有效降低开发门槛,助力应用实现深度智能化升级。围绕以上核心特性,社区已上线配套解读专题,从底层原理到实战开发,带您全方位探索鸿蒙智能生态的无限可能:• 开放能力解读合集: 全景梳理端侧 AI 智能生态,挖掘应用创新方向。• 图像超分 :“低清小图秒变高清”,实现应用智能化视觉升级。• 文搜图 :“读懂文字,秒找图片”,实现端侧智能检索。• 人脸检测 :精准识别、定位、解析人脸信息,打造安全高效视觉能力。• 通用文字识别 :解锁图像文字智能化提取、转换新体验。• 【 图像超分实战案例合集 】 开发者创意、实战大集合!模糊素材一键焕新,相册、文旅、工程多场景玩法等你来发掘。二、HarmonyOS 7 (API 26) 新能力解读|能力持续升级,夯实开发底座HarmonyOS 7(API 26) 进一步强化全场景能力:优化跨端分享、多设备流转及渲染调度;大屏适配支持平行视界多任务体验;升级方舟引擎与 FAST Kit,提供高性能算法库,降低数据处理与复杂计算成本;通过 AI 赋能应用故障分析,助力开发者高效排查、修复稳定性问题。围绕这些新能力,社区推出解读专题,持续为开发者提供全方位能力支撑,助力更多高质量应用加速创新落地:• 精准碰一碰 :轻触即传、精准就位,“碰哪传哪”让跨端内容分享更有方向感!• 平行视界 :单应用即可实现多任务,开启大屏多任务的全新体验。• Fast Kit算法加速服务 :四大核心能力增强,突破计算性能瓶颈,显著提升流畅度,提升应用运行效率。• AI 赋能应用故障分析 :依托系统级 AI 诊断能力,实现应用故障智能发现、精准定位、高效修复,提升应用运行质量。三、创新特性互动话题|分享多元灵感 & 凝聚创新力量围绕多项创新特性,社区已分别开设多个脑洞满满的专项互动讨论话题,从创意构思到落地实现、从灵感迸发到交流共鸣。欢迎大家在评论区挖掘创作灵感,探索创意落地的无限可能:• 3DGS端侧重建 :①「云游古迹园林」借助 3DGS 快速还原古迹、园林,手机沉浸式 3D 逛景,并能叠加特效,线上体验云夜游,线下还原古建实景氛围。②「记忆复原所」为消失的老房子、旧校园、儿时街巷做数字留存,基于 3DGS 做成可漫游的 3D 场景,随时重温那段旧时光。• 图像超分 、文搜图新玩法 :①「旅行光影集」输入文字即可筛选旅行照片,拍糊抓拍一键高清修复,快速整理高清图集,便于撰写游记、社交分享。②「工地影像台账」文字搜图或点击图纸点位,就能调取对应工地实拍素材,模糊图纸、现场照片自动优化清晰度,便于对照核查。• 玩转平行视界 : ①「线上会议批注坊」依托平行视界双栏能力,屏幕共享一侧展示 PPT,另一侧实时撰写笔记,另一侧实时撰写笔记、添加批注,线上开会也拥有线下协作体验。②「盘面随行看」借助平行视界分屏能力,左侧放自选股票列表,右侧看 K 线行情和资讯,无需来回切换页面,盯盘分析更省心。• 精准碰一碰 : ①「参会笔记助手」借助碰一碰精准投递,现场拍摄的 PPT 照片直接归类到对应嘉宾板块,AI 自动提炼要点,整理成完整学习笔记。②「家装选材看板」手机内的建材照片,对着平板户型图对应位置一碰,图片即可归类至对应房间,轻松留存选材资料与施工现场记录。四、AI Coding 工具与开发实践|工欲善其事、必先利其器掌握各项新特性后,开发者可依托官方一站式 AI 开发工具链,大幅降低上手门槛。该工具链内置丰富的开发与调试组件,能显著缩减编码周期,助您在多设备场景下快速实现功能的高效集成与落地:为此,社区也同步推出了“快速入门指导”与“牛人实战经验分享”,手把手带你打造更懂 HarmonyOS 7(API 26) 的智能应用:• 【工具推荐】DevEco Code & DevEco CLI :开箱即用的代码全流程辅助,无缝融入现有 AI Agent 工作流,满足不同开发场景与习惯的提效需求。• DevEco CLI 快速入门 :让 AI Agent 更懂 HarmonyOS 应用开发,无缝接入本地工作流。• 【开发者实践】 :拒绝重头摸索,直接“抄作业”式学习,复制牛人的成熟经验,让两款 AI Coding 工具能力100% 转化为你项目的生产力。🔗点击查看更多 HarmonyOS 7(API 26) 的新能力:• HarmonyOS 7(API 26) 新能力一览• Harmony Intelligence 能力一览 • HarmonyOS 7(API 26) 版本变更说明 欢迎大家积极体验、实践落地,将新能力融入鸿蒙应用开发,携手共建高质量、有创意、智能化的鸿蒙应用生态。声明:本专题所汇集的优质文章旨在展示社区开发者在 HarmonyOS 7(API 26) 实战开发中的多元探索与宝贵实践。由于技术方案在不同业务场景下可能存在差异,相关内容仅供参考。我们鼓励广大开发者在遵循官方技术文档的基础上,结合实际项目进行验证。若您在实践中发现更优方案,欢迎在社区与我们交流共建,共同赋能鸿蒙生态的成长。

评论368

浏览 430.8k

发布于2026-09-07 02:50
hid31955859
Lv7
Navigation 在元服务里多页面跳转,NavPathStack 在切后台回收后恢复,路由参数丢失如何稳妥保存恢复?

评论1

浏览 5

发布于11小时前
小木木
Lv10
        在开发视频类应用时,既要保证用户观看时屏幕常亮,又要支持退后台或锁屏后音频不中断,这并非单一接口可以解决,而是需要一套“前台窗口控制 + 后台进程保活 + 媒体会话管理”的组合拳。        前台防息屏:窗口级控制        在视频播放页,当用户正在观看时,需要调用窗口管理接口(如鸿蒙的  setWindowKeepScreenOn )将当前窗口的  isKeepScreenOn  属性设置为  true 。这一操作仅在应用处于前台时生效,能有效避免用户在未交互时系统自动息屏。当视频暂停或退出播放页时,应及时将该属性恢复为  false ,避免不必要的电量消耗。        后台保活:长时任务是“通行证”        当用户按下 Home 键或锁屏,应用退至后台后,系统为了省电会冻结或回收后台进程。此时,必须向系统申请  AUDIO_PLAYBACK  类型的长时任务。长时任务相当于向系统声明:“我正在执行用户可感知的音频播放,请不要杀掉我的进程”。如果没有这个“通行证”,音频流会在退后台后很快被系统静音或中断。        播控与焦点:AVSession 是“桥梁”        仅有长时任务还不够,还需要通过  AVSession  向系统的播控中心(锁屏界面、通知栏)注册媒体会话。这一步的作用有三:一是同步播放状态和元数据(如标题、封面),让用户在锁屏界面能看到播控卡片并进行切歌、暂停等操作;二是接入系统的音频焦点管理器,当有来电或导航语音时,能够自动暂停或降低音量,避免音频混音冲突;三是接收系统的播控指令并转发给播放器。        综上所述,一个合格的视频播放器后台架构是三位一体的: setWindowKeepScreenOn  负责前台体验,长时任务负责后台生存, AVSession  负责系统级交互与音频协调。三者配合,才能实现“亮屏看视频、锁屏听声音”的完整体验。

评论0

浏览 5

发布于13小时前
小木木
Lv10
        在鸿蒙等分布式操作系统中,调用远端「分布式相机」并非简单的网络请求,而是一条跨越本地应用层、微内核 IPC、分布式软总线及远端设备的复杂链路。当用户感知到预览卡顿或录制延迟时,传统的监控手段往往难以触及底层通信的真实开销。要解决这一问题,必须将 IPC 通信过程转化为标准化的可观测指标,使隐藏的通信瓶颈变得“可见、可测、可归因”。        构建基于 TraceID 的端到端链路追踪        可观测性的首要任务是实现跨设备的“可关联性”。在调用分布式相机时,必须在发起端生成全局唯一的 TraceID,并将其注入到 IPC 请求的元数据中。该 TraceID 需随请求穿透本地微内核、软总线传输层,直至远端设备的能力执行端。通过在链路的每一个关键节点(Hop)打点记录 Span,系统能够将一次完整的相机调用拆解为多个可独立测量的时延分量,例如本地序列化耗时、IPC 权限校验开销(通常在 0.5-2μs)、软总线网络传输延迟以及远端反序列化与执行时间。这种细粒度的拆解,是定位“慢在哪个环节”的基石。        量化 IPC 开销的黄金信号体系        在链路追踪的基础上,需进一步提取反映 IPC 性能的核心指标。首先是延迟指标,不仅要关注平均延迟,更要紧盯 P95/P99 尾延迟,因为尾部延迟的放大往往是队列拥塞或重试机制引发的真实痛点。其次是吞吐与饱和指标,包括每秒成功传输的图像帧数(FPS)、消息队列的排队深度以及丢帧率。最后是资源消耗指标,通过持续剖析(Profiling)采集本地与远端设备的 CPU 利用率、GPU 计算效率及内存带宽占用。例如,若发现 IPC 延迟激增的同时伴随 CPU 利用率飙升,通常意味着 Binder 线程池或软总线服务陷入了结构性拥塞;若 GPU 占用率极低但延迟极高,则瓶颈大概率出在跨设备的数据搬运或序列化环节。        数据导出与深度推断        采集到的 IPC 指标需要通过 OpenTelemetry 等标准化框架,以 OTLP 协议导出至 Prometheus、Grafana 等后端平台。在平台侧,通过关联同一 TraceID 下的链路 Span、结构化日志与资源指标,工程师可以还原每一次分布式相机调用的完整“案发现场”。例如,当出现偶发的跨设备调用超时时,可通过 TraceID 快速过滤出异常请求,对比其网络传输耗时与正常请求的差异,从而判断是网络抖动还是远端设备调度延迟所致。        综上所述,将分布式相机的 IPC 开销转化为可观测指标,本质上是从“黑盒猜测”向“白盒诊断”的范式转变。它不仅要求我们在架构设计上预埋 TraceID 传播与细粒度打点,更要求建立一套涵盖延迟、吞吐、资源消耗的多维指标体系。只有当 IPC 的每一次序列化、每一跳网络传输都能被量化并呈现在监控大盘上时,分布式系统的性能调优才真正具备了数据驱动的底气。

评论1

浏览 6

发布于13小时前
社区运营
Lv10
向光而行,码向未来。在满载热爱、深耕代码的 1024 程序员节来临之际,为致敬每一位积极交流、乐于共建的鸿蒙开发者,社区特别推出1024鸿蒙开发者限定勋章互动福利活动,以专属荣誉回馈每一份真诚的参与与陪伴!✨ 同步更新:10 月 25 日前(含当日)留言的开发者,第一批勋章已发放完成,可前往【个人中心 - 我的勋章】查看;第二批发放筹备中,敬请等候!尚未参与的伙伴欢迎留言互动,解锁这份 1024 专属荣誉;已收获勋章的开发者,欢迎在本帖晒出勋章截图,分享喜悦,聊聊你对鸿蒙开发者勋章体系的期待与想法。🎁活动奖励1024程序员节・鸿蒙开发者限定勋章(2026年)📝如何获得你的专属勋章• 统计周期:即日起至2026年10月31日• 参与方式:在本帖或以下任意活动帖内留言互动,即为有效参与。①官方互动话题:👉互动有礼,「我与鸿蒙这一年」! ②官方活动合集帖:👉向光而行,码向未来 | 1024 程序员节鸿蒙开发者活动全攻略・这一年,我们一起写鸿蒙 💬内容方向• 💡交流开发心得、分享实战经验• 📚分享学习感悟、记录成长故事• 👏为上榜开发者喝彩、送上诚挚祝福• 😄畅聊鸿蒙开发路上的趣味小故事注:留言请保证内容原创,合法合规,遵守社区发帖规范。📌勋章发放说明• 勋章将在活动期内分批次统计有效参与、陆续发放,敬请耐心等候。• 勋章将统一发放至【华为开发者联盟个人中心】,发放状态可在个人中心内进行查看。一枚专属勋章,是属于程序员节独有的仪式感,也是社区对每一位平凡却闪耀的开发者的认可。愿我们始终保持热爱、持续交流、彼此赋能,在鸿蒙生态的沃土上携手耕耘、追光前行!✨ 即刻留言互动,领取属于你的1024专属荣光!

评论363

浏览 3.1k

发布于2026-10-22 06:12

我要发帖子

热门标签
1

HarmonyOS 5

2

HarmonyOS 6

3

DevEco Studio

4

UI

5

HarmonyOS

6

ArkUI (方舟UI框架)

7

HarmonyOS 7

8

App开发

9

Ability框架

了解社区公约,与您携手共创和谐专业的开发者社区。
在 App 中查看