自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 鸿蒙 AI 模型推理端侧算力与内存防爆策略

不仅有隐私泄露的风险,稍微没网或者信号差一点,照片传不上去,修复功能直接变白板。痛定思痛后,我决定把 AI 模型直接塞进手机里,用端侧的 NPU 跑。但这过程,简直就是对设备极限的压榨。NPU 的容错、像素重排的并发、底层内存的暴力释放,每一个环节的疏忽都会让功能直接暴毙。用户如果疯狂点击“修复”按钮,千万别一次次去调推理,加个状态锁,处理完一张再处理下一张。有了这段降级代码,应用在低端机和旗舰机上都能跑,不会出现一换设备就闪退的尴尬。每次推理完成后,只要数据已经提取出来,必须立刻调用底层的释放接口。

2026-11-06 18:00:00 29

原创 摆脱多端数据撕裂,鸿蒙分布式数据库同步与冲突合并

不同设备的系统时间并非绝对同步,手机比平板快了哪怕五分钟,手机上产生的任何过期数据,都会在同步时无情地覆盖平板上的最新修改。底层的冲突解决机制只能作为兜底,真正的数据一致性,必须靠业务层的版本控制、自定义合并策略以及严谨的生命周期管理来维护。要彻底解决这个问题,必须抛弃底层的时间戳,在业务数据里自己维护一个“版本号”。当收到远端数据时,先比对版本号,谁大听谁的。在排查这个 bug 的过程中,我还发现了一个极度隐蔽的问题:有时候两台设备死活连不上,日志里没有任何报错,就是静默失败。,切断不必要的通信通道。

2026-11-06 17:30:00 28

原创 Camera Kit流处理,XComponent相机预览与扫码重构

上周在搞扫码模块的重构,客户反馈说:“扫个二维码,画面被拉得像个面条一样,而且对着条码照了半天都没反应。但真去排查的时候才发现,鸿蒙的 Camera Kit 里的水,比想象的要深。因为预览流(PreviewOutput)只是为了让你看的,它根本不会把图像帧数据吐给你,扫码引擎拿不到数据当然扫不出东西。如果你的屏幕是 16:9 的,但相机预览流选了个 4:3 的配置,画面就会被强行拉伸变形。选对了 Profile,渲染出来的画面才是不变形的。// 警示:必须根据屏幕比例,去数组里找一个最接近的格式。

2026-11-06 13:09:38 41

原创 ArkWeb深水区探索,H5页面离线包与首屏极致优化

每次启动应用,去服务端拉取一次版本号,如果发现版本不一致,就在后台悄悄下载新的 zip 包,解压到沙箱路径下,下次启动再加载沙箱里的新资源。用离线包解决首屏骨架的加载延迟,用请求拦截解决跨域与资源加载耗时,两者结合,你的 H5 页面就能跑出原生的感觉。要解决跨域问题,同时又想享受本地资源的秒开体验,最成熟的方案是拦截 H5 的网络请求。鸿蒙的 Web 组件默认有着自己的缓存策略,但这玩意儿完全依赖服务端返回的 HTTP 头。协议加载,从而避开跨域限制,而底层的静态资源却完全走的本地读取。

2026-11-06 10:53:13 59

原创 甩掉臃肿的包袱,包体积瘦身与冷启动如何提速

打开工程目录,里面躺着无数历史遗留的高清切图,很多是早就废弃的旧版活动图。开启构建工具的资源摇树机制后,那些没有被代码引用的图片和字符串,在编译打包时会被自动踢出 HAP 包。同时,把所有不需要透明通道的 PNG 图片,全部转成了 WebP 格式。包体积剩下的真正大头,是一个内置的短视频模块。后,用户首次安装应用时,基础包里根本不包含短视频代码。冷启动提速,核心在于推迟非必要的初始化,并给用户即时的视觉反馈。里,我们初始化了各种推送 SDK,直接拖慢了首屏渲染。// 非首屏必需的初始化,设置为按需执行。

2026-11-05 16:55:04 110

原创 跨端数据漫游,分布式 KVStore 冲突与合并

等两台设备联网同步后,手机上的清单里只剩下了面包,牛奶凭空蒸发了。这就是典型的分布式数据同步冲突,系统底层的默认策略把你坑了。这就导致了惨剧:如果手机时间比平板快了 5 分钟,那么手机上产生的任何数据,在同步时都会无条件覆盖平板上修改的数据。总的来说,分布式同步不能全靠系统,业务层的版本控制和冲突合并才是数据一致性的定海神针。系统默认的同步策略是 Last-Write-Wins(最后写入者胜出),判断标准是设备的系统时间。要解决这个问题,绝不能依赖底层的时间戳,必须在业务层引入版本号(乐观锁)。

2026-11-05 16:50:00 128

原创 ArkWeb 混合开发的内存清理与桥接陷阱

起初我以为是 H5 内部的定时器没有清理,结果接了 DevEco Studio 的 Profiler 一看,全是 ArkTS 侧的原生对象没有释放。改用 RESIZE 后,键盘弹出只会压缩窗口高度,底部的输入框会自适应滚动到可视区域,页面顶部的元素则岿然不动。综上所述,混合开发绝不是简单的拼接,管好桥接的生命周期,做好跨域兜底,才是稳定运行的前提。如果不去主动干预,它会把你的原生内存吃得连骨头都不剩。在 H5 的输入框打字时,软键盘一弹出来,整个 Web 页面就被顶得飞起,连顶部的原生导航栏都不见了。

2026-11-05 15:54:01 217

原创 ArkWeb 混合开发的桥接与渲染资源释放指南

最近在排查公司主 App 的内存泄漏问题时,发现了一个极其诡异的现象。用户只要在首页和活动详情页之间来回切换几十次,应用的内存就会以一种不可阻挡的趋势飙升,最后直接被系统强杀。而这个活动详情页,正是用 ArkWeb 组件嵌套的 H5 页面。起初我以为是 H5 页面里存在未清理的定时器或者庞大的 DOM 树。然而通过 Profiler 抓取底层快照后发现,所有的内存泄漏源头都指向了 ArkTS 侧。这逼迫我不得不把混合开发中那些容易忽略的资源回收逻辑,从头到尾彻底扒了一遍。

2026-11-05 13:54:38 150

原创 HarmonyOS 7 应用冷启动与包体积优化实录

我们在构建脚本里加入了一个自动转换任务,将除了极其复杂的透明图之外的所有静态资源,全部转换为 WebP 格式。为了这 5% 的用户,让 95% 的用户承担 30MB 的下载成本,显然不划算。目录,里面躺着无数历史遗留的高清切图,有些是早被废弃的活动图,有些是同一张图的多个尺寸备份。这一招,直接砍掉了将近 15MB 的死重。我们将短视频相关的所有代码、图片、甚至底层的播放器三方库,全部剥离到了独立的 Feature 模块(HSP)中。包变小了,启动速度自然会快一点,但真正的瓶颈在于冷启动时的初始化逻辑。

2026-11-04 11:19:31 158

原创 打破屏幕边界,HarmonyOS 7 折叠屏与平行视界深度适配指南

随着折叠屏设备的普及,我们的应用迎来的大量“大屏”用户的投诉。为了实现真正的“大屏生产力”,我们对应用的 UI 架构进行了彻底的重构,引入了断点监听与平行视界。当应用处于半折叠状态(比如上半屏显示内容,下半屏虚拟键盘输入)时,如果不做特殊处理,系统的软键盘弹出一瞬间,会把整个页面甚至顶部的状态栏全部往上顶。结果发现,用户从边缘滑出抽屉时,系统的全局返回手势也跟着触发了,导致应用直接退出。这导致了灾难性的后果:每次点击,右侧组件都会经历完整的销毁与重建,原有的滚动位置和输入状态全部丢失。

2026-11-04 11:10:28 173

原创 HarmonyOS 7 深度数据加密与 HUKS 密钥库操作

当用户把数据迁移到新手机时,旧的加密数据库文件也被搬过去了,但新手机的安全环境里没有对应的密钥,导致数据全部变成乱码,应用直接死机。并设计一套云端同步的方案,让用户在新设备上重新登录后,从云端拉取解密后的数据,再用新设备的 HUKS 密钥重新加密落盘。IV 的长度通常是 12 字节,由于 HUKS 不支持将 IV 与密文自动绑定,你必须手动将生成的随机 IV 拼接到密文的前面,一起存入数据库。很多开发者在加密成功后,把密文存进数据库,却把 IV 给丢了,导致解密时死活解不开。时,必须开启数据库级别的加密。

2026-11-04 11:09:40 187

原创 ArkUI V2 架构下的复杂业务数据流重构

更要命的是,V1 对于嵌套层级超过两层的对象,监听往往会失效,导致你修改了底层数据,界面上却毫无反应,查错查得让人怀疑人生。如果你在 V2 体系下依然看到明显的延迟,请检查是否在某个中间组件上误用了整体刷新的装饰器,从而破坏了 V2 的精准下发。在 V2 下,即便你只改变了一个无关紧要的状态变量,只要是相关的组件被重新评估,这个过滤函数就会重跑。时,V1 可能会导致整个列表重新计算,而 V2 的框架能够在毫秒级精准定位到那一个绑定了该属性的 Text 组件进行更新。V2 的核心理念是“我的地盘我做主”。

2026-11-04 11:08:56 72

原创 HarmonyOS 7 多线程模型与长任务调度的底层博弈

由于应用在后台需要频繁抓取本地缓存的用户行为日志,并在合适的网络环境下打包上传,早期的代码过度依赖了异步(async/await)机制,导致在高负载场景下,多条日志流交错写入,最终上传的日志文件惨不忍睹。,但在解析几十兆的日志文本时,UI 界面出现了极其严重的掉帧,连下拉通知栏都卡成了幻灯片。初始化 Worker 时的路径极其容易出错,在 Stage 模型下,路径的起点是模块名,而不是源码的相对路径。这是因为 TaskPool 的线程和主线程是完全内存隔离的,你想用的变量在主线程里,子线程根本访问不到。

2026-11-04 11:08:23 205

原创 UI 适配的暗礁,沉浸式状态栏、安全区与软键盘交互重构

仔细一看确实惨不忍睹:顶部的背景图被状态栏的电池电量遮挡,底部的输入框在弹出软键盘后被顶飞到了屏幕之外,还有侧边的返回手势和页面里的侧滑控件严重冲突。如果你的页面里恰好有一个从侧边滑出的抽屉菜单(Drawer),这两者会直接打架。如果你的页面里有一个长列表,整个列表会瞬间被压缩,体验极差。如果页面没有明显的抖动跳跃,说明你的避让逻辑完全达标了。极其容易忽略的警示:在折叠屏展开或者横竖屏切换时,安全区的高度是动态变化的。设置之后,键盘弹出只会压缩当前窗口的高度,而不会平移整个页面。

2026-11-03 16:58:25 399

原创 鸿蒙元服务(Atomic Service)与卡片联动开发

这听起来很酷,但它的开发形态与传统 App 有巨大的差异,尤其是在包体积和卡片联动的限制上,极其苛刻。设置后,在本地调试时,你必须使用特定的元服务签名,且需要在 DevEco Studio 的启动配置里勾选“Deploy as Atomic Service”。否则,打包出来的依然是普通 HAP 包,无法测试免安装拉起的效果。在一个全新的鸿蒙工程里,创建一个元服务模块,并在里面放置一个静态的文本卡片。我们在剥离代码时,把底层的三方统计库、复杂的图片渲染库全部砍掉,只保留了最基础的 ArkUI 和网络请求。

2026-11-03 16:57:21 124

原创 WebSocket 假死与断连的长连接保活与重连机制

function reconnect() { if (reconnectAttempts >= MAX_RECONNECT) { // 警示:达到上限,必须给用户 UI 提示,切勿无限重试 showNetworkErrorToast();} // 1.5 的指数增长,加上 0-1000ms 的随机抖动 const delay = Math.min(30000, Math.pow(1.5, reconnectAttempts) * 1000) + Math.random() * 1000;

2026-11-03 16:52:07 402

原创 冲破 ArkTS 性能极限,XComponent 融合 C++ 与 OpenGL ES 渲染

要解决这种计算密集型与渲染密集型叠加的需求,唯一的出路就是下沉到 Native 层,用 C++ 结合 OpenGL ES 来接管渲染管线。在 C++ 侧的片元着色器里,通过纹理采样(Texture Sampling),根据蒙版像素的明暗度,动态混合两张图片。在 C++ 侧,我们需要通过 NAPI 接收 ArkTS 传来的 Surface ID,并利用 EGL 库将其与 OpenGL 的上下文绑定。里就试图去拿 Surface ID 并传递给 C++,原生层拿到的一定是空指针,导致应用直接闪退。

2026-11-03 16:43:00 207

原创 HUKS软加密算法在金融应用中的重构

HUKS 的底层依托于设备的 TEE(可信执行环境),生成的密钥材料是无法导出的。密钥生成完毕,开始重构加解密逻辑时,很快遇到了第一个阻碍。因为 HUKS 的密钥是强绑定在当前设备上的,当用户将数据迁移到新手机时,旧的加密数据全部变成了乱码,应用直接崩溃。在应用启动时,进行设备指纹校验,如果发现是全新的设备,直接清空本地缓存,强制用户重新登录拉取云端脱敏后的数据,确保安全与体验的平衡。使用同样的模式进行加密,把生成的密文存入关系型数据库,尝试写一段代码,模拟一次拔掉网线后的冷启动解密,验证数据的完整性。

2026-11-03 16:39:54 102

原创 无网环境的离线优先架构与数据同步机制

如果在没网的时候,用户点击“发布评论”直接弹一个“网络异常”,他们的第一反应绝对是卸载。现代应用架构的标准是“离线优先”:无论有没有网,操作立刻在本地完成,剩下的交给后台悄悄同步。这里有一个极度危险的边缘场景:客户端发出了请求,服务器处理成功了,但在返回响应时网络断了。然后关闭飞行模式,观察备忘录是怎么在后台自动同步到本地服务端的,并查一下数据库里的状态变化。如果用户不停地在操作,而每一次操作都触发一次同步任务,服务器会被你的并发请求打爆。UI 监听数据库的变化,立刻刷新列表,显示刚刚发布的内容。

2026-11-02 16:22:20 136

原创 LazyForEach 长列表滑动与渲染底层优化

当组件被复用时,系统会直接拿缓存里的组件,把新数据塞进去。这省去了组件实例化和布局计算的时间,是长列表丝滑的关键所在。条件切换,底层的 ArkUI 就会把前一个按钮销毁,重新创建另一个。对于几千条数据的列表,这会引发巨大的性能开销。里加一个复杂的数学计算,观察帧率瞬间掉到 30 以下的惨状,体会一下 UI 线程的脆弱。它的核心逻辑是:系统只渲染屏幕上看得见的节点,滑出屏幕外的节点会被回收进缓存池。'已选中' : '未选中'),层级达到了七八层,每次滑动系统都要重新计算所有子节点的尺寸,CPU 直接拉满。

2026-11-02 16:21:38 184

原创 超大分辨率引发的闪退,图像处理与内存防爆指南

一张在硬盘上只有 20MB 的 JPEG 图片,在内存里解压成未压缩的位图时,体积会膨胀几十倍。解决这个问题的核心逻辑是:不要先解压成完整的大图再去缩小,而是让底层解码器只吐出你需要的那个小尺寸。记住一个原则:图片的解码、压缩、写入流,这一整套动作全部是 CPU 密集型操作,千万不要在主线程里做,统统丢进。在重构过程中,我遇到了一个更诡异的问题:用户反复修改头像十几次后,应用虽然没有崩溃,但变得极度卡顿。如果你在一个列表里加载了五张这样的图片,内存瞬间逼近 500MB,系统会毫不犹豫地把你干掉。

2026-11-02 16:20:39 253

原创 HarmonyOS 7 跨设备流转应用的接续

如果没有,直接把这个流转按钮置灰,或者加上引导提示,千万别等用户点了之后才弹一个冷冰冰的“接续失败”。你需要流转的数据(如视频进度、文档 ID),必须在触发接续动作之前,就已经准备好了。这样用户的视觉体验就是:平板打开应用,首页闪了一下,直接无缝进入了正在看的那个视频。执行时,ArkUI 的 WindowStage 还没创建完毕,你的页面栈根本不存,此时跳转就像是在半空中建楼。当数据通过分布式软总线传到了目标设备(平板),接续的生命周期就开始了。的逻辑,测试时一旦平板应用在后台,接续就彻底失效。

2026-11-02 16:19:56 164

原创 摆脱 V1 的状态监听,ArkUI 状态管理 V2 重构

页面嵌套了三层对象,你修改了最底层的属性,界面上却毫无反应,最后只能用各种临时变量去强行刷新。刚开始重构时,为了赶进度,我留了几个老页面用的是 V1 语法,只把新增的模块切到了 V2。另外,如果是多层嵌套的对象,你必须在需要监听的每一层属性上都加上。里还有更复杂的嵌套,或者是一个几万条数据的数组,整个代理过程会产生巨大的内存开销,导致页面滑动明显掉帧。为了保证状态的绝对可靠,如果是极其复杂的业务数据,建议搭配。V2 页面里的输入框,修改后返回 V1 页面,状态也完全丢失。修饰数组,有一个极易踩中的陷阱。

2026-11-02 16:18:59 120

原创 JS 互相调用导致内存爆炸?HarmonyOS 7 Web 混合开发进阶

之前接手了一个鸿蒙工程,里面有一个很重的 H5 页面。用户在 App 里来回切换,只要切上几十次,App 绝对闪退。我拿着性能工具抓了半天内存,发现是Web组件和原生的内存泄漏。这篇复盘,讲讲 Web 混合开发里那些极易导致内存爆炸的雷区。

2026-11-01 07:35:35 131

原创 为了不做“手点回归”:HarmonyOS 7 UI 自动化测试

以前我们的发版流程是这样的:测试同学拿着两台手机,把登录、下单、支付等几十个流程手动点一遍。点完半天过去了。这周我决定把核心流程自动化。查了半天,鸿蒙主要用的是结合。写起来像写脚本一样,但跑起来的时候,各种玄学问题层出不穷。这篇复盘,记录我用 UITest 踩过的坑。

2026-11-01 07:34:40 149

原创 本地文件传给平板直接卡死?HarmonyOS 7 分布式文件传输实录

我们做的是一个企业内部的文档审批系统。用户在手机上下载了 50 页的 PDF 审批单,然后想直接流转到平板上用大看。鸿蒙的分布式能力听起来很牛,我直接用了底层的配合分布式软总线来传。本地局域网测试,10MB 文件秒传。结果带去给客户演示,网络稍微差一点,应用直接闪退,文件传到一半变成了 0 字节。这篇记录我是怎么踩坑,最后转向系统级“分布式文件系统”的血泪史。

2026-11-01 07:33:49 232

原创 HarmonyOS 7 Camera Kit 扫码重构记

业务需要一个“扫一扫”来识别商品条码。我寻思着,调用 Camera Kit 起个预览流,然后接入系统的扫码库,几分钟搞定的事。但真机一跑,测试直接笑出了声:我写的扫码页面,相机画面被严重拉伸,像个面条一样,而且对着商品条码扫了半天,一点反应都没有。这周花了两个晚上,硬啃了相机底层的流配置,终于把这个功能盘明白了。这篇就聊聊 Camera Kit 里那些让人头秃的参数。

2026-11-01 07:32:43 160

原创 被弹窗搞崩的转场动画,HarmonyOS 7 高阶动效与共享元素

上个月,我们的电商应用做了一波视觉升级。产品经理拿着某知名 App 的录屏跑过来:“你看人家这个商品详情,点开图片的时候,那张图是‘飞’过去的,特别丝滑。咱们现在这个‘啪’一下直接切过去,太生硬了。这需求听着简单,不就是加个转场动画嘛。但在 ArkUI 里,稍微复杂的动效,如果和页面生命周期没对齐,那简直是一场灾难。我一开始兴冲冲地用了全局转场,结果动画还没播完,弹窗一闪,直接把我整个路由栈干碎了。这篇复盘,记录我是怎么从一个只会用animateTo的菜鸟,一步步填平高阶动效那些反人类设计的坑。

2026-11-01 07:29:31 531

原创 HarmonyOS 7 被杀后台的长时任务与生命周期保活

上个月在做一款运动跑步的 App。用户点击“开始跑步”后,屏幕会展示实时配速和轨迹。QA 提了个极度致命的问题:“我带着手机去外面跑,只要一黑屏或者切到微信回个消息,再切回来,刚才跑了三公里的轨迹全没了,变成了重新计步!我一看日志,应用切后台不到 10 秒,就被系统直接 Suspend(冻结)了,所有的定时器和定位监听全部停止。我试图找系统 API 讨个说法:“凭什么杀我?”其实不怪系统,鸿蒙对后台耗电管控极其严格,这是为了保续航。要让应用在后台持续计步和定位,必须申请。

2026-10-31 21:08:50 102

原创 弱网环境下HarmonyOS 7 离线消息队列架构实战

前几天周末,我在一个偏远郊区的农家乐团建。去卫生间的时候,顺手在咱们自己的 App 里发了条带图的动态。结果提示“网络错误”,图片没发出去。更气人的是,我辛辛苦苦敲的百来字文案,因为页面退出,直接没了。回来之后我就跟开发组拍桌子:“用户环境千变万化,谁规定发动态的时候一定得满格 5G?必须做一个离线优先的架构,发送按钮点下去,不管有没有网,立刻给我变成‘已发送’。这就是“乐观更新(Optimistic UI)”和“离线队列”的由来。这篇记录下我是怎么在鸿蒙里用 RDB 构建一条可靠的本地消息队列的。

2026-10-31 21:07:42 398

原创 传张高清头像直接闪退?HarmonyOS 7 图像处理与内存优化

上个月给应用加了“修改头像”的功能。本来觉得这是再基础不过的需求:调起系统相册,选张照片,拿到路径,传给后端,搞定。结果周一刚上班,测试妹子就跑过来:“你过来看看,我拿我的手机选了一张相机拍的高清大图当头像,刚点确定,整个 App 直接闪退了!我拿过手机复现了一下,确实崩了。。我一开始还不信,不就加载一张图片吗?现在的手机哪个不是 8G、12G 内存,一张图怎么可能把应用撑爆?直到我看到了她的相册截图:那是一张 4800 万像素、大小差不多有 15MB 的原图。这就是典型的踩了“图像内存解码”的盲点。

2026-10-31 21:06:38 333

原创 全是if/else惹的祸,一次ArkUI渲染性能调优的彻夜煎熬

前两天,我们应用的设置页面进行了一次大改版。产品要求在页面里加上“账号状态切换”、“深色模式开关”、“网络诊断”等十几个模块,每个模块都有自己的状态。我心想这还不简单,直接用if/else判断状态,条件满足就渲染对应的组件。写的时候很爽,上线后却被好几个用户投诉:“我的手机滑这个设置页,怎么像在划幻灯片一样,一顿一顿的?这就很尴尬了。一个纯静态的列表页,连大图都没有,怎么可能会卡?拿着 DevEco Studio 的 Profiler,我追了一晚上,终于揪出了那个潜藏在if/else里的“渲染刺客”

2026-10-31 21:05:22 371

原创 HarmonyOS 7 多线程并发重构

上周做数据大屏的项目,后端为了图省事,把一个包含几千条设备状态数据的接口,直接组装成了一个 8MB 的巨型 JSON 扔给我。我拿着接口文档,直接在页面的里发请求,拿到结果后直接。真机跑起来,一点开页面,界面直接凝固了。转场动画卡住,手指点击毫无反应,大概过了三四秒,系统弹出了那个令人窒息的“应用无响应”。被 QA 狠狠嘲笑了一番之后,我开始补课 HarmonyOS 的多线程并发。

2026-10-31 21:04:05 29

原创 HarmonyOS 7 折叠屏平行视界的重构之路

上周五,QA 拿着新买的折叠屏手机跑过来,直接甩我脸上:“你自己看看,你这页面展开之后像个大号直板机就算了,点个列表进去,详情页怎么把我列表给挤没了?我拿过来一看,确实惨不忍睹。之前做 UI 的时候,我习惯性地用了和绝对定位,在直板机上看着岁月静好,一到折叠屏展开态(大屏),元素全被拉长;更致命的是,我用了简单的if/else来控制列表和详情的显示,展开后逻辑直接错乱。这周末痛定思痛,把整个页面的折叠屏适配和平行视界重写了一遍。

2026-10-27 16:44:08 347

原创 后台任务不是你想保就能保——HarmonyOS 7实战避坑手记

做后台任务这块,最大的感受就是——别想当然。很多人以为后台任务就是"开个后台线程跑",其实不是。HarmonyOS的后台任务,是一套完整的系统机制,涉及到权限、资源调度、用户感知、系统约束。你得把这套机制搞明白,才能写得稳。几个核心结论再总结一下:第一,先分清楚你要哪种后台任务。长时任务、延迟任务、一次性任务,各有各的适用场景,别用错了。第二,权限是第一位的。别以为代码写完就完事了,配置文件里的权限、运行时的动态授权,一个都不能少。第三,真机测试是必须的。模拟器上跑的一切,都可能是假象。

2026-10-26 09:53:48 419

原创 端侧图像超分接入指南:HarmonyOS 7 四倍高清放大实战

如果你做的是票据识别、截图文字提取这类业务,超分后的可读性要真机实测——模型补出来的"细节"可能不是真实的文字,而是看起来像文字的纹理。图变大了,细节也变多了。HarmonyOS 7 的端侧超分把这个问题翻了过来:推理发生在设备的 NPU 等硬件上,图片全程不传云端。超分不是即时完成的。超分不是万能的,但它是一个性价比很高的能力:十行代码接入,换来画质提升 + 带宽节省 + 合规叙事,三件事一次结清。这两个的区别,你拿一张老照片对比一下就知道:插值放大后人脸还是糊的,超分后人脸上的皱纹、头发丝都能看清楚。

2026-10-24 13:50:35 798

原创 ArkWeb 手记01:H5 加载与生命周期

先说个真实场景。上个项目做混合应用,首页嵌了个 H5 运营页。测试第一天就提了一堆 bug:点进去白屏三秒、加载转圈转到天荒地老、退出再进来页面状态全没了、偶尔直接卡死得杀进程重进。我当时第一反应是——前端又写了什么鬼东西。后来把日志拉下来才发现,锅真不在前端。是我这个 ArkTS 宿主这边,Web 组件的生命周期压根没管明白。onPageEnd里瞎调,Controller 还没绑好就敢loadUrl,渲染进程崩了连个监听都没有。这事儿其实挺普遍。很多人觉得 Web 组件嘛,不就是声明一个就完事了。

2026-10-23 19:22:43 671

原创 HarmonyOS 7 实战 24:自动化测试与流水线,别再用手指点回归了

自动化测试和 CI/CD 是团队走向正规军的必经之路。单测要 Mock 网络,别依赖真实环境。UI 测试要给组件加.id(),且必须用。流水线配置要动态注入签名证书,千万别提交密钥。把你应用里最核心的一个页面(比如详情页),加上.id(),然后用 UITest 写个脚本,让它自动滑到底部并点击购买按钮。

2026-10-22 15:41:39 192

原创 HarmonyOS 7 实战 23:状态管理进阶,V2 版本别乱用

状态管理 V2 是未来的绝对主流。V1 和 V2 绝对不能混用,换就得整条链路一起换。类必须用,需要监听的属性必须加@Trace。子组件用@Param只读接收,用@Event通知父组件修改。把你项目里一个嵌套了三层的用户信息组件,从 V1 改写成 V2。跑一下,看看在输入框修改深层属性时,页面刷新是不是变得更流畅了。

2026-10-20 21:13:31 178

原创 HarmonyOS 7 实战 22:ArkUI 底层渲染原理与性能调优

如果在列表里,每一个 Item 都是一个复杂的自定义组件,滑出屏幕再滑回来时,它会重新走一遍生命周期(被重新调用)。用@Reusable装饰器可以让组件被复用,而不是重新创建。这在长列表里极其重要。typescript@Reusable@Component// 复用时的回调build() {// 复杂 UI配合,滑动帧率能肉眼可见地提升。渲染优化是一门内功。不要在build()里做任何耗时计算,计算结果提前缓存。减少布局层级嵌套,慎用if/else,保留状态用visibility。

2026-10-19 19:20:01 144

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除