android - 创建长期运行的服务

标签 android service broadcastreceiver android-broadcast intentservice

我需要创建一个与 Android 应用程序一起运行的服务,无论用户在应用程序的哪个屏幕上。 该应用程序是一个聊天应用程序,因此当设备处于离线状态时,该服务应排队所有正在离线发送的消息,而当设备已连接时,它应同步所有消息。

我已经为作业调度程序编写了代码,以便在设备在线时自动同步数据,但是当应用程序处于 Activity 状态时,我想手动处理。

最佳答案

创建一个长期运行的服务。

操作系统仍然可以在低内存和可能的其他情况下终止服务。有两种方法可以克服这个问题:

  1. 如果您正在实现该服务,请覆盖 onStartCommand() 并返回 START_STICKY 作为结果。它会告诉系统,即使它会因为内存不足而想要终止您的服务,它也应该在内存恢复正常后立即重新创建它。

  2. AlarmManager .一个系统服务,它将定期执行操作。这将确保如果您的服务将被终止,甚至整个进程将终止(例如强制关闭)- AlarmManager 将 100% 重新启动。

谢谢。

关于android - 创建长期运行的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44651641/

相关文章:

android - 从 URI 旋转图像并将旋转后的图像保存到同一位置

android - Activity 2 中的 BroadcastReceiver 未接收到 Activity 1 中启动的服务发送的广播

android - onStartCommand() 完成后 Service 会自动停止吗?

android - 如何获取为特定 Intent 注册的所有 BroadcastReceiver 的列表?

java - android.intent.action.DOWNLOAD_COMPLETE 不会在下载失败时收到

android - 直接使用 SpeechRecognizer API - onResults() 一直返回 null

java - Realm 未获取数据

android - 如何从广播接收器中注销监听器并停止服务

android - 短信广播接收器 - 如何在短信被默认消息应用程序读取之前阻止/删除短信

android - 如何在 index.html 中引用 cordova.js