AnkiDroid 性能与卡顿 —— 大 collection 怎么跑才流畅
为什么会卡顿
AnkiDroid 的性能瓶颈通常在几个地方:
- 集合过大:上万张卡 + 上百 MB 媒体文件 → SQLite 查询变慢
- 设备性能弱:老 Android 手机(特别是 5.0 之前的版本)CPU/GPU 跟不上
- 学习屏幕模板复杂:卡片模板里有大量 CSS、JavaScript、MathJax 公式 → 渲染慢
- 过多媒体文件:单个牌组塞了几百张大图/长音频 → 加载时 I/O 瓶颈
优化手段(从简单到复杂)
1. 定期清理孤立媒体文件
活动栏更多菜单 → 检查媒体,扫出孤立文件(磁盘上有但没被任何卡片引用),清理掉。这能减小媒体目录体积,加快媒体扫描。
2. 拆分超大牌组
一个几千张卡的大牌组,可以按内容逻辑拆成多个小牌组(比如"日语 N2"拆成"日语 N2::汉字" + "日语 N2::词汇" + "日语 N2::语法"):
- 每个小牌组的排序、计数渲染更快
- 排期计算也更快
- 算法上:小牌组参数独立,可以更精细地调控新卡上限
3. 优化模板
如果某套牌组的卡片上有大量:
- MathJax / LaTeX 公式
- 复杂 CSS 布局 / 动画
- JavaScript 交互
考虑:
- 简化模板 CSS(去掉动画、减少阴影/渐变)
- 复杂公式在桌面版上预渲染成图片再插到卡片里
- 拆模板:把复杂模板牌组单独放,和简单模板牌组分开
4. 在设置里关掉不必要的功能
- 关掉白板(设置 → 复习 → 白板)——不开就不加载白板组件
- 关掉自动播放音频(设置 → 复习 → 自动播放音频)
- 关掉自动同步(设置 → 同步 → 自动同步)——手动点箭头同步,每次学习前同步一次就行
- WiFi Only 同步(设置 → 高级 → WiFi Only)——移动网络不自动同步
5. 升级 App / 系统
- AnkiDroid 的 2.22+ 版本做了大量性能优化(SQLite 查询缓存、WebP 图片支持等),确保用最新版
- Android 8.0+ 对 AnkiDroid 的支持最好,老系统(5.x)性能明显差
- 换一台性能好的设备(骁龙 865+/天玑 1200+/麒麟 990 以上)
6. 媒体文件格式建议
- 图片:用 WebP 格式(比 JPG/PNG 小 30~50%)——AnkiDroid 2.24+ 原生支持
- 音频:统一转成 MP3 128kbps mono(单声道比双声道小一半,质量损失不大)
- 不要用 FLAC/WAV(无损格式一张音频就好几 MB,加载慢)
平板 / 折叠屏上的性能
大屏设备上卡片渲染区域更大,内存消耗更高。如果折叠屏展开后卡顿明显:
- 关掉不必要的视觉效果(比如夜间模式的卡片背景渐变)
- 确保折叠屏有足够的内存(6GB RAM 以上比较舒适)
什么时候该换设备
AnkiDroid 在以下设备上可能跑不动:
- RAM < 2GB
- Android 版本 < 5.0
- CPU 主频 < 1GHz
这些设备即使是最简单的牌组也可能卡顿。新设备也不贵,换一台是最直接的解决。
小技巧:关闭动画
部分 Android 系统可以在开发者选项里关闭窗口动画 / 过渡动画,AnkiDroid 响应会明显更快。这对整个系统都有效,不只是 AnkiDroid。