当前位置: 首页 > news >正文

我用 ArkTS 做了一个精力管理 App:用“电量“隐喻追踪你一天的能量流向

起因:我想知道我的精力都花哪儿了

说实话,做这个 App 的动机挺私人的。

去年有段时间每天下午三四点就像被抽空了一样,但我说不清到底是哪件事把我搞垮的。试过一些情绪记录类 App,打开就是让你选"开心/难过/焦虑"——我不是要记情绪,我就想知道精力的流向。

后来我想到一个比喻:人的精力就像手机电量。开会扣 20%,午休回 15%,写代码其实也在耗电但你不自知。如果能用这种方式记录,门槛就很低了。

于是「元気手账」就这么来了。iOS 版先做完上了 App Store,后来鸿蒙生态起来了,我就着手做了 HarmonyOS 版本,现在已经上架华为应用市场(包名 com.xun.batterylog),版本 1.2.0。

核心机制:delta 记录 + 时间轴

和大多数打卡类工具不同,元気手账的核心交互就一个动作:记录一次精力变化的 delta 值

比如:

  • “-20 下午开会”
    • “+30 跑了 5 公里”
    • “-10 刷了半小时短视频”
      每天有一个初始电量基线(默认 50),所有 delta 累加后得到当前电量。打开 App 看到的是一条时间轴,直观展示今天精力的涨跌。

这个思路在鸿蒙版里的数据模型大概是这样的:

// 精力记录的核心结构 interface EnergyRecord { id: string title: string delta: number // 正数=充电,负数=耗电 timestamp: number projectId?: string // 关联到"方舟项目" } // 每日基线 interface DailyBaseline { date: string // yyyy-MM-dd openingEnergy: number // 默认50 } ``` 说白了就是每次记录一个 delta,正负值代表充能或消耗。简单粗暴,但实际用下来信息密度够了。 ## 鸿蒙适配:ArkUI 的一些取舍 iOS 版用的 SwiftUI + SwiftData,迁移到 HarmonyOS 这边我用的是 ArkTS + ArkUI 声明式开发。两边的声明式 UI 思路比较像,但细节差异不少。 说几个我踩过的坑: **1. 列表性能** 时间轴本质是一个长列表,每个 item 里有 delta 数值、标题、时间戳、关联项目色块。在 ArkUI 里我用 `List` + `LazyForEach` 做的懒加载,数据源绑的是当天的记录数组。iOS 那边 SwiftUI 的 List 天然支持懒加载,鸿蒙这边得自己管 DataSource,稍微多写点代码。 **2. 快捷动作条** 这是个高频交互点——用户设置好常用的记录模板(比如"开会 -15"、"午睡 +20"),首页顶部一行横滑卡片,点一下就直接入库。ArkUI 的 `Scroll` 组件配合 `Row` 布局做横向滚动,体验还行。 **3. 本地存储** iOS 版用 SwiftData(底层 SQLite),鸿蒙版我选了关系型数据库 `@ohos.data.relationalStore`。纯本地存储,不走云端,这个设计是刻意的——精力数据算是比较私密的东西,我不想让用户有"数据被传上去了"的顾虑。 ## "方舟项目":精力管理和目标管理打通 这个功能是 1.1.0 加的。用户可以创建若干个"项目"(我取名叫方舟),每次记录精力消耗时可以关联到某个项目上。 比如我自己有三个方舟:「独立开发」「写作」「运动」。一个月下来看统计,发现"写作"居然比"开发"更费电——每次写完长文 delta 都在 -25 到 -35。这个洞察直接影响了我排日程的方式:写作放上午精力高峰,开发可以放下午。 项目还有个经验值机制,每次关联记录会给项目加 exp,满 100 升级,最高 10 级会变成"传奇"状态。有点游戏化的意思,但不重,就是个小正反馈。 ## 一些数据和现状 老实说,鸿蒙版上架时间不长,目前下载量还在爬坡阶段,没有什么亮眼的数字可以拿出来说。iOS 版积累了一些用户,鸿蒙这边属于从零开始。 我观察到一个现象:鸿蒙应用市场里工具类 App 的竞争比 iOS 低不少,尤其是"精力管理"这个细分方向,基本没有同类产品。大多数健康类 App 走的是睡眠监测、心率之类的生理指标路线,而"主观精力感受的量化"这个角度几乎是空白。 这是个机会,也可能说明需求本身就小众。反正我自己天天在用,先把产品打磨好再说。 ## 技术栈总结 | 维度 | iOS 版 | 鸿蒙版 | |------|--------|--------| | UI 框架 | SwiftUI | ArkUI (ArkTS) | | 数据持久化 | SwiftData | @ohos.data.relationalStore | | 状态管理 | @Observable + @Environment | @State + @Link + AppStorage | | 构建工具 | Xcode | DevEco Studio + Hvigor | 两边代码没法复用,但设计思路是一致的。如果你也在做跨平台的独立产品,我的建议是:别想着"一套代码两端跑",老老实实各写一遍,反而快。 ## 后续计划 - 加个桌面卡片(HarmonyOS 的 Widget),显示当前电量和最近一条记录 - - 周/月统计图表用 ArkUI 的 Canvas 自己画,目前还在调样式 - - 考虑接入 HarmonyOS 的通知能力,做定时提醒记录 --- 如果你也在做 HarmonyOS 开发,或者对精力管理这个方向有想法,欢迎交流。我的包名是 com.xun.batterylog,华为应用市场搜「元気手账」能找到。
http://www.cnnetsun.cn/news/2171247.html

相关文章:

  • AI辅助自动化测试
  • Xilinx K7 FPGA远程更新第一步:用STARTUPE2原语搞定FLASH的CCLK时钟控制
  • DLSS Swapper终极指南:3分钟解锁游戏画质与性能的免费方案
  • [特殊字符]收藏!网络安全红队面试实战指南:从工具小子到渗透专家的进阶之路
  • Swoole WebSocket+LLM流式响应生产级部署(千万级QPS稳定性验证报告)
  • 如何10分钟掌握BepInEx:游戏插件框架完整入门指南
  • 初创团队如何利用Taotoken统一管理多个AI模型的API密钥与成本
  • PlantUML在线编辑器:从文本到架构图的智能转换引擎
  • 嵌入式轻量级上下文引擎设计:解决资源受限环境的状态管理难题
  • VFig技术:基于AI的SVG向量化解决方案
  • BetterGI完整指南:如何用开源工具实现原神自动化操作
  • 聚天下英才于湾区——广东人力资源展厅展览-森克思科技
  • LLM API延迟测试与优化:方法论与实践
  • 掩码扩散语言模型:并行解码与生成式AI新突破
  • B/S与C/S:浏览器VS客户端,谁才是数字孪生的主角
  • 阿斯利康宣布在英投资3亿英镑,首席执行官称增长势头强劲
  • ClawHost:开源AI应用托管平台部署指南与实战
  • CUDA与Triton下的矩阵乘法优化实战
  • 告别裸奔:手把手教你用LIN API(C语言)为你的汽车电子节点穿上‘标准外衣’
  • LeetCode:226翻转二叉树
  • ARM SVE2饱和运算指令SQABS与SQADD详解
  • GPT-5.5使用全攻略操作指南与实战技巧
  • 网络安全 | TCP三次握手与四次挥手
  • Horizon X3 AI开发板:边缘计算与BPU架构实战解析
  • MT5 机构级CTP交易管理系统CTP_PLUS
  • 2026年安卓固件加固公司怎么选?从防护强度、性能损耗到合规支撑全解析
  • 我的第一个医学图像分割项目:用UNet在Kaggle细胞核数据集上跑出0.92 IoU
  • ARM SVE2浮点运算指令优化与AI加速实践
  • JavaScript学习路线
  • Kinematify:基于RGB视频的3D关节物体自动重建技术