——打造 7×24 小时运行的智能反诈安全助手
一、背景
在"灵犀安全"反诈 App 中,一个核心需求是:
即使用户没有主动打开 App,系统也能够持续监听风险信息,并及时进行诈骗预警。
例如:
用户正在使用微信:
诈骗者发送消息
↓
微信产生通知
↓
灵犀安全后台监听
↓
AI分析风险
↓
立即提醒用户
这要求 App 具备:
- 长时间后台运行能力;
- 系统事件持续监听能力;
- 网络连接稳定性;
- 异常退出恢复能力。
然而 Android 系统为了保护:
- 电量;
- 内存;
- 用户隐私;
对后台应用进行了大量限制。
因此:
如何设计一个稳定运行的后台安全应用,是移动端安全开发中的重要问题。
二、Android后台运行机制演进
Android后台策略经历了多个阶段。
Android早期版本
Android 4.x时期:
后台Service可以长期运行。
例如:
Service启动
↓
一直运行
↓
监听事件
开发简单。
但是问题:
大量应用后台常驻:
- 消耗电量;
- 占用内存;
- 降低性能。
三、Android后台限制产生
从 Android 6.0 开始:
Google 引入:
Doze模式
目标:
降低设备待机状态下的耗电。
当手机:
- 熄屏;
- 静止;
- 长时间未使用;
系统进入:
Doze Mode
此时:
限制:
- 网络访问;
- 定时任务;
- 后台Service。
四、Doze模式对反诈App的影响
对于普通App:
影响不大。
但是对于安全应用:
影响明显。
例如:
用户晚上睡觉:
手机锁屏
↓
进入Doze
↓
后台任务暂停
↓
无法检测风险
如果诈骗信息发生:
系统可能无法及时响应。
五、为什么NotificationListenerService比较特殊?
在"灵犀安全"中:
核心能力:
监听系统通知
使用:
NotificationListenerService
它与普通Service不同。
普通Service:
App启动
↓
Service运行
NotificationListenerService:
Android系统
↓
通知事件
↓
回调Service
它属于:
系统绑定型服务。
由Android系统管理生命周期。
六、NotificationListenerService生命周期
主要方法:
1. onListenerConnected()
监听服务连接成功:
override fun onListenerConnected(){
Log.d(
"Notify",
"监听服务已连接"
)
}
2. onNotificationPosted()
收到通知:
override fun onNotificationPosted(
sbn:StatusBarNotification
){
}
3. onNotificationRemoved()
通知删除:
override fun onNotificationRemoved(
sbn:StatusBarNotification
){
}
七、为什么后台监听仍然会失效?
实际开发中,即使使用:
NotificationListenerService
仍可能遇到:
问题1:
App被系统杀死。
原因:
厂商优化策略。
例如:
- 小米 MIUI;
- 华为 HarmonyOS;
- OPPO ColorOS;
- vivo OriginOS。
它们会主动清理后台。
问题2:
网络连接断开。
例如:
WebSocket:
连接成功
↓
手机锁屏
↓
系统释放网络
↓
WebSocket断开
导致:
AI结果无法实时推送。
八、解决方案一:前台服务 Foreground Service
Android推荐:
长期运行任务:
使用:
Foreground Service
特点:
后台运行同时显示通知。
例如:
状态栏:
灵犀安全正在保护你的设备
创建:
class SecurityService:
Service(){
}
启动:
startForeground(
1,
notification
)
系统认为:
这是用户感知的重要任务。
因此降低被杀概率。
九、前台服务架构
整体:
用户启动安全防护
|
↓
Foreground Service
|
↓
NotificationListener
|
↓
风险检测
|
↓
AI分析
十、解决方案二:电池优化白名单
Android提供:
Battery Optimization。
默认:
系统会限制后台耗电。
需要引导用户:
开启:
设置
↓
电池
↓
应用耗电管理
↓
允许后台运行
代码跳转:
Intent(
Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
)
十一、解决方案三:厂商后台权限适配
Android生态最大问题:
不是Google Android。
而是:
国内厂商。
小米
需要开启:
自启动
↓
无限制电量使用
华为
需要:
后台保护
↓
允许运行
OPPO / vivo
需要:
允许自启动
允许后台活动
因此安全类App需要:
提供:
后台运行设置引导页
十二、WebSocket后台保活设计
由于"灵犀安全"需要实时接收:
RAG_RESULT。
所以:
WebSocket稳定性非常关键。
1. 心跳机制
客户端:
每30秒:
发送:
{
"type":"ping"
}
服务器:
返回:
{
"type":"pong"
}
作用:
避免:
TCP连接超时。
2. 自动重连
设计:
WebSocket断开
|
↓
检测close
|
↓
等待3秒
|
↓
重新连接
代码:
function reconnect(){
setTimeout(()=>{
connect()
},3000)
}
十三、App生命周期管理
移动端状态:
启动
↓
前台
↓
后台
↓
暂停
↓
销毁
需要监听:
onShow()
onHide()
例如:
进入后台:
onHide(){
saveState()
}
重新打开:
onShow(){
restoreConnection()
}
十四、数据缓存设计
后台可能:
暂时无法联网。
因此:
风险状态需要缓存。
例如:
本地:
{
"lastRisk":
"HIGH",
"time":
"2026-07-18"
}
重新连接:
同步服务器。
十五、通知监听 + 后台运行完整架构
最终设计:
Android System
|
|
NotificationListenerService
|
|
Foreground Service
|
|
UniApp Native Plugin
|
|
风险检测模块
|
|
RAG服务
|
|
WebSocket推送
|
|
用户提醒
十六、项目中的实际优化
在"灵犀安全"中:
针对后台稳定性:
采用:
1. 系统通知监听
负责:
感知风险来源
2. WebSocket长连接
负责:
实时结果接收
3. 本地状态恢复
负责:
异常恢复
4. 用户授权管理
负责:
合法访问系统能力
十七、安全问题考虑
后台监听能力非常强,因此必须注意:
数据最小化
只上传:
风险相关文本
不上传:
全部通知历史
用户透明授权
必须明确告诉用户:
例如:
开启通知监听后,
应用会分析通知内容,
用于诈骗风险检测。
数据加密
传输:
使用:
HTTPS
WSS
避免:
中间人攻击。
十八、技术总结
设计一个长期运行的 Android 安全应用,需要同时考虑:
系统机制
+
后台策略
+
网络稳定
+
用户授权
+
隐私保护
"灵犀安全"最终形成:
NotificationListenerService
+
Foreground Service
+
WebSocket保活
+
自动重连
+
权限引导
实现:
一个能够长期运行、持续感知风险、实时响应诈骗事件的移动安全助手。
总结
后台能力并不是简单地:
"让App一直运行"。
真正可靠的安全应用,需要理解:
- Android系统调度机制;
- 后台限制策略;
- 厂商优化规则;
- 网络连接生命周期。
在反诈场景中:
后台稳定性决定了:
AI能力能否真正落地。
如果感知层不能持续工作,再强的大模型也无法发挥价值。