1.摘要:
解决长时间玩手机的难题,app可以设置默认弹出选择的app,当手机休眠唤醒时,会强制弹出该app
https://github.com/langmyerburling463-gif/solo_test
2.背景:
每次打开手机都会神不知鬼不觉打开抖音或者游戏,控制不住自己不知不觉得刷上1个小时,浪费时间。如果你有学习app,每次打开手机都会默认弹出该学习app,提升个人时间的合理利用
3.实践过程:
任务拆解与实现分析
任务拆解方法
我将整个项目拆解为以下几个核心模块:
-
基础架构搭建
-
React Native + TypeScript 项目初始化
-
Android 原生模块集成
-
权限配置和清单文件设置
-
-
核心功能实现
-
广播接收器(监听屏幕解锁事件)
-
前台服务(保持应用进程活跃)
-
应用启动逻辑(处理 MIUI 权限限制)
-
设置持久化(SharedPreferences 集成)
-
-
用户界面
-
时间范围选择
-
应用列表选择
-
服务控制
-
权限设置引导
-
-
问题修复与优化
-
MIUI 权限适配
-
时间选择模态框修复
-
应用列表加载优化
-
启动方式简化
-
使用的 SOLO 能力
-
代码分析与理解
-
快速阅读和理解现有代码结构
-
识别关键文件和功能模块
-
-
跨平台开发
-
React Native 前端开发
-
Android 原生代码编写和调试
-
-
问题定位与解决
-
日志分析(解析 MIUI 系统日志)
-
权限问题排查
-
布局和交互问题修复
-
-
构建与部署
-
Gradle 构建配置
-
Release APK 生成
-
ADB 安装和调试
-
-
版本控制
-
Git 仓库初始化
-
代码提交和推送
-
关键操作过程
-
初始化与配置
-
检查项目结构和依赖
-
配置 Android 权限和服务
-
-
核心功能开发
-
实现
ScreenUnlockReceiver.java监听屏幕事件 -
实现
ScreenMonitorService.java前台服务 -
实现
ForegroundLauncherActivity.java应用启动 -
开发 React Native 原生模块(应用列表、设置持久化)
-
-
UI 开发与修复
-
实现独立时间选择功能
-
添加 24:00 时间选项
-
实现模糊搜索功能
-
修复时间选择模态框问题
-
-
问题排查与优化
-
分析 MIUI 权限限制
-
简化应用启动逻辑
-
优化设置持久化
-
-
部署与版本控制
-
构建 Release APK
-
初始化 Git 仓库
-
推送代码到 GitHub
-
踩过的坑
-
MIUI 权限限制
-
问题:MIUI 系统对后台应用启动有严格限制
-
解决方案:使用前台服务和透明活动,引导用户开启特定权限
-
-
时间选择模态框
-
问题:时间选项不显示、无法滚动、点击无响应
-
解决方案:重写模态框实现,使用 ScrollView 和 TouchableOpacity
-
-
Kotlin 守护进程连接失败
-
问题:Gradle 构建时 Kotlin 守护进程连接失败
-
解决方案:Gradle 自动回退到非守护进程编译
-
-
Git 推送失败
-
问题:HTTPS 连接超时
-
解决方案:切换到 SSH 协议,添加 GitHub 到已知主机
-
-
应用列表加载问题
-
问题:应用列表为空或只显示一个应用
-
解决方案:添加预设应用列表作为 fallback,优化加载逻辑
-
-
设置持久化
-
问题:设置不保存或加载失败
-
解决方案:优化设置加载时机,确保在应用列表加载完成后再加载设置
-
-
Android 12+ 后台活动限制
-
问题:Android 12+ 对后台活动有严格限制
-
解决方案:使用前台服务和正确的 Intent 标志组合
-
4.效果与总结:
这个app对我很适用,我是后端开发,不会安卓,几乎用vibe coding一步一步做出来了

