Skip to content

Persistence and Background

AceGuru-mjh edited this page Oct 1, 2026 · 4 revisions

持久化与后台保活

🛠️ 工程化 · 🏠 首页 › Persistence-and-Background

Home Version Kotlin Modules Tools License

Persistence-and-Background

📑 本页目录

Android 上"永久后台"不可达。本项目的姿态是诚实降级: 用前台服务 + WorkManager 看门狗做能承诺的部分,并对不能承诺的部分明说。

1. 组件

组件 位置 作用
PersistenceEngine platform/persistence 前台服务 + WorkManager 看门狗(被杀后自动拉起)
ApexCoreService app/.../service/ 前台 service,承载长任务与浏览器引擎
BootReceiver app/.../receiver/ 开机 / 包替换事件后恢复后台链路
DreamRenderer platform/cs-mem WorkManager 周期任务:息屏 + 充电 + WiFi 时巩固记忆
ApexApp app/.../ApexApp.kt @HiltAndroidApp,启动时注入记忆写入 actor、梦境渲染器、Ubuntu 生命周期协调器、桥接服务、环境状态更新器

2. 前台服务合规性

审计确认已具备:

项 状态
API 34 前台服务 specialUse 声明 ✅
FOREGROUND_SERVICE_SPECIAL_USE 权限 ✅
PROPERTY_SPECIAL_USE_FGS_SUBTYPE 属性 ✅
PendingIntent 标志 ✅ 仅 1 处且带 FLAG_IMMUTABLE or FLAG_UPDATE_CURRENT
Android 13+ POST_NOTIFICATIONS ✅ 权限屏主动申请(否则通知静默不可见)

3. WorkManager 约束(梦境渲染)

DreamRenderer 必须同时满足:

屏幕关闭(息屏) + 正在充电 + 连接 WiFi + 电量 ≥ 50%

满足后做三件事:保鲜验证(随机挑低能宏真跑一遍)、熵衰减(全局 EntropyManager)、 拓扑迁移(TopologyMigrator)。不满足就不跑 —— 不做欺骗式前台规避。

4. 持久化存储的四种形态

数据 机制 特点
任务 checkpoint FileTaskStore:tmp 写 → fsync → 原子 rename 崩溃安全;损坏文件移入 corrupt/(隔离不删除)
会话 / 引导元数据 SessionMetadataStore / RootfsMetadataStore / BootstrapStateStore 同样改为 tmp + fsync + rename(T81 D-5)
记忆图 Room(schema v3) 升级必须显式 Migration,仅降级允许 destructive
设置 / Key SharedPreferences;PAT 用 EncryptedSharedPreferences(AES-256-GCM) 备份规则已排除两份 prefs(防止恢复后降级明文)

5. 恢复语义(诚实)

场景 行为
任务中断 重启后 UI 横幅提示(任务标题 + 中断步骤),等用户显式选择继续或取消;PAUSED 不自动跑,CANCELLED 绝不自动继续
终端会话 恢复的是元数据;进程级 PTY 无法 reattach(fd 是进程本地)→ 会话状态如实标记为 EXITED / BROKEN,不伪造 RUNNING
Ubuntu 引导 warmUp() 只 reconcile + 派生状态,零下载(用户没同意消耗流量前 App 不替用户做决定)

6. 已知限制

限制 说明
会话跨 App 死亡存活 未实现。设计草案 TerminalSupervisorService(START_STICKY + partial wakelock),延迟理由:本环境无法验证 service 生命周期 / 进程死亡矩阵,拒绝发布未验证的生命周期服务
platform:persistence 的历史死代码 PersistenceEngine / WatchdogWorker 曾全仓库零调用;T76 明确不基于它建恢复
厂商省电策略 国内 ROM 常杀后台,需在"应用管理"里额外放行(自启动、后台运行、后台弹窗)

7. 排错

现象 处理
悬浮球/通知消失 检查通知权限与前台服务通知是否被系统折叠;部分 ROM 需允许后台弹窗
梦境从不执行 约束未同时满足(尤其"充电 + WiFi");WorkManager 也可能被省电策略推迟
重启后任务横幅不出现 只有存在非终态任务时才提示;任务已 COMPLETED / CANCELLED 属预期
终端会话重启后不可用 预期行为:PTY 不可 reattach,需新建会话(见 §5)

8. 相关页面

footer

🏠 返回首页 · 📚 文档索引 · ❓ FAQ · 🔧 故障排查 · 🗺️ 路线图 · 🐛 提 Issue

Android Guru Agent · v1.4.4 · Kotlin 2.0.21 · Compose · PRoot · Room

Clone this wiki locally