【问题标题】:Android service sleeping after a prolonged period of time安卓服务长时间休眠
【发布时间】:2011-01-07 09:57:38
【问题描述】:
我正在为 android 操作系统编写一个连接到服务器的软件,并且应该保持连接直到程序关闭。连接作为服务在后台运行,据我在 android 中收集的服务应该无限期地保持连接。
但是在几个小时后(时间范围似乎是随机的),服务会无缘无故地断开连接,但似乎没有触发任何断开连接事件。服务器会定期 ping 连接的设备,我认为这会使服务保持活动状态。
我尝试使用似乎没有任何区别的 WakeLocks 以及似乎也不起作用的 startForeground()。我正在尝试使用 AlarmManager 在一段时间后唤醒应用程序,但这感觉有点麻烦。有没有人有任何建议?还是有什么明显的我错过了?
提前感谢您的帮助。
【问题讨论】:
标签:
android
service
timeout
alarmmanager
【解决方案1】:
就我在 android 中收集的服务而言,应该无限期地保持连接。
这通常是不正确的。
但是在几个小时后(时间范围似乎是随机的),服务会无缘无故地断开连接,但似乎没有触发任何断开连接事件。
LogCat 可能会表明您的进程已被终止。
我尝试过使用 WakeLocks 似乎没有任何区别
由于手机会在没有手机的情况下进入睡眠状态,因此WakeLock 对您的应用至关重要,至少在您使用 WiFi 时是这样。据我了解,打开的 3G 套接字上的入站数据包应该会自动唤醒手机,但我还没有尝试过。
但是,手机应该比“几个小时”更快地进入睡眠状态,所以我假设您通过其他方式(例如,插入 USB)保持设备处于唤醒状态。
还有 startForeground() 似乎也不起作用
现在应该足以让你免于被杀,AFAIK。当然,权衡是Notification。