gpt4 book ai didi

android - 使用 AlarmManager 定期检查我的永久服务是否正在运行

转载 作者:太空狗 更新时间:2023-10-29 12:47:41 24 4
gpt4 key购买 nike

我有一个服务,它应该与服务器保持永久连接以便接收通知。及时从服务器获取消息对我的应用至关重要。

我无法使用 GCM 推送,因为连接将在本地网络中进行,而手机可能没有任何互联网连接。我也知道在服务中保持永久连接的电池问题,但我会让用户选择此选项并告知他/她潜在的电池消耗(实际上,当设备始终处于相同状态时,该功能主要有意义接电源的地方)。我也知道Android系统可以随时杀死我的服务,甚至用户可以使用任务 killer 来摆脱当时正在运行的所有服务。

话虽如此,我考虑过定期使用 AlarmManager 来检查我的 Service 是否正在运行并在未运行时重新启动它。我不相信这个选项,因为服务器可以在服务被终止但尚未由 AlarmManager 重新启动后发送消息。

我的问题基本上是是否有更好的策略来确保我按时收到消息?

到目前为止,我能找到的所有相关信息都支持避免永久服务并使用其他东西,但由于我的用例的性质,我别无选择。

最佳答案

您可以考虑在任意数量的设备广播(例如 wifi 连接状态和启动)上设置广播接收器;

<receiver android:name=".receivers.BootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>

<receiver android:name=".receivers.WifiReceiver">
<intent-filter>
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>

关于android - 使用 AlarmManager 定期检查我的永久服务是否正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16274988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com