Android 后台保活机制与系统限制分析

灵犀安全 · 打造 7×24 小时运行的智能反诈安全助手

——打造 7×24 小时运行的智能反诈安全助手


一、背景

在"灵犀安全"反诈 App 中,一个核心需求是:

即使用户没有主动打开 App,系统也能够持续监听风险信息,并及时进行诈骗预警。

例如:

用户正在使用微信:

诈骗者发送消息

↓

微信产生通知

↓

灵犀安全后台监听

↓

AI分析风险

↓

立即提醒用户

这要求 App 具备:

然而 Android 系统为了保护:

对后台应用进行了大量限制。

因此:

如何设计一个稳定运行的后台安全应用,是移动端安全开发中的重要问题。


二、Android后台运行机制演进

Android后台策略经历了多个阶段。


Android早期版本

Android 4.x时期:

后台Service可以长期运行。

例如:

Service启动

↓

一直运行

↓

监听事件

开发简单。

但是问题:

大量应用后台常驻:


三、Android后台限制产生

从 Android 6.0 开始:

Google 引入:

Doze模式

目标:

降低设备待机状态下的耗电。

当手机:

系统进入:

Doze Mode

此时:

限制:


四、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被系统杀死。

原因:

厂商优化策略。

例如:

它们会主动清理后台。


问题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一直运行"。

真正可靠的安全应用,需要理解:

在反诈场景中:

后台稳定性决定了:

AI能力能否真正落地。

如果感知层不能持续工作,再强的大模型也无法发挥价值。

← 返回首页