我已经使用android的VPNService
编写了VPN,它运行良好。当我运行它时,它将创建一个前台服务,并通过我的VPN服务器发送所有流量。它还具有内部重新连接机制,可以在由于任何原因断开连接而不会停止服务本身的情况下重新连接VPN服务器。
我希望此VPN服务始终保持工作状态。但是我的问题是,此VPN服务有时会在完全随机的一段时间后停止(有时只需要10分钟,而有时它会在停止前2-3天工作)。
由于停止时间是完全随机的,并且我无法在代码中找到任何可导致这种情况的位置(我已经调试了几周),所以我认为也许是因为某些原因,Android OS本身停止了VPNService
。我想知道是否有一种方法可以检测系统是否从外部停止了我的服务。有想法吗?
不幸的是,即使是后台运行的服务,Android OS仍可以在内存不足和其他情况下终止该服务!
不仅是Android,而且所有移动操作系统都通过杀死后台应用程序来优化RAM使用。
这样做是为了使前台应用程序具有最高优先级。它可以确保当前应用的平稳运行并减少系统负载。
这篇文章中提到了两种方法: Background Service getting killed in android
我以前曾遇到过这个问题,我通过创建永远运行的服务解决了该问题,即使该服务被手动杀死或从系统中重新创建了自己。