技术 / 架构与实现

04 启动、3秒动态开场与前台服务

基于 Android 1.0.2 / 1.0.2-trial · 2026-10-10 · 完整正文
原生开场与本机服务并行原生开场与本机服务并行计时条件页面条件失败/等待Activity创建隐藏WebView+开场覆盖层Canvas首帧记录uptime · 至少3000msService初始化资源 · Python · 回环服务WebView载入首页Android密钥/页面ready开场揭示闸门首帧已发生+已满3秒+页面ready进入四页工作台延后通知权限申请加载慢或启动失败留状态/明确重试入口
图3|开屏揭示条件与服务并行初始化。3秒从首帧起计,加载失败不以空白页面冒充就绪。小屏可横向滚动查看图示

启动序列

  1. Activity创建隐藏WebView与原生开场覆盖层;同时启动WorkbenchService。动画和业务初始化并行,不用固定sleep阻塞主线程。
  2. StartupAnimationView使用Canvas/Paint/Path和渐变绘制科技蓝背景、轨道、声波及“文字/声音/视频”阶段。设计坐标按屏幕映射,首个实际绘制帧记录SystemClock.uptimeMillis()。
  3. StartupTiming的时长常量为3000ms。显示页面需同时满足首帧发生、已满3000ms和pageReady=true;页面慢时保持加载状态,失败时显示错误与“重试启动”。
  4. Service立即建立低重要性通知渠道并进入前台。API34及以上使用FOREGROUND_SERVICE_TYPE_SPECIAL_USE;Manifest附带用户发起本机语音和视频任务的用途描述。
  5. 后台执行器将assets/workbench拷到getFilesDir()/workbench;模板和静态文件按前缀更新,其他已有文件通常保留。
  6. 启动Chaquopy Python;Java用SecureRandom生成32字节密钥(256bit),并转为64个十六进制字符的字符串保存在运行内存。
  7. 调用android_runtime.start(root,nativeDirectory,secret):设置环境、导入业务、替换视频worker、恢复任务状态、建立随机端口回环服务。
  8. Activity用X-Android-Key头载入首页。返回首页设置HttpOnly Cookie,让同源子资源继续通过Android密钥验证。
  9. 页面ready后等待开场满足计时条件,隐藏覆盖层。Android13及以上的通知权限请求延后至开场完成、页面ready且Activity恢复状态,避免遮住动画。

关键常量与生命周期

项目 实际值/机制
开场最低时长 3000ms,从首个绘制帧起计
服务Host/Port 127.0.0.1,端口0由系统动态分配;不是固定8091
通知渠道/ID workbench_tasks/1001
服务状态轮询 每2秒调用Python status_json
处理期唤醒 PARTIAL_WAKE_LOCK,单次最长10分钟;仍忙时后续轮询可重新获取,空闲释放
服务重建提示 START_STICKY;不能据此保证进程永远存活
Activity销毁 销毁页面与预览资源,不主动停止前台服务

copyAssets代码还检查previews/前缀,但真实试听位于assets/previews/,不能将其泛化为“升级一定覆盖所有已有试听”。本版本试听内容未调整;未来资源升级应按实际相对路径核验。

通知展示ACTIVE步骤汇总,例如“合成MP3/准备照片/合成MP4”;精确分段与编码进度属于任务页。唤醒锁仅影响部分CPU休眠,不能阻止所有厂商省电清理、强行停止或存储故障。

依据:StartupTiming.java:4–12、StartupAnimationView.java:35–94、MainActivity.java:72–145、WorkbenchService.java:28–103、android_runtime.py:168–197。

把这些功能用到你的内容里。

免费试用、正式版优惠授权与招商合作:微信 wzqy2019。说明你需要配音、照片视频、PC或Android端,我们一起确定适合的使用方式。

合作从一次沟通开始

让你的内容制作,
找到合适的工作台。

免费试用、优惠授权、PC与Android版本、工作室及渠道合作意向,欢迎直接咨询。

打开微信,搜索 wzqy2019,添加时备注“听文合作”。具体授权、价格与合作政策以沟通为准;本站不收款。