Android后台任务选择

Android后台任务选择,android,kotlin,Android,Kotlin,我有一个Android“购物车”应用程序,供商业客户下单(企业对企业)。我想在后台运行一个任务来同步项目和订单。但我很难弄清楚我应该使用多少后台任务选项(异步任务、服务、同步适配器、Jetpack Work Manager等) 首先,一些背景说明: 我们向客户提供安卓手机 这些手机运行的是安卓6(API 23) 我不担心电池寿命,因为这些手机一次只能使用一个小时(或更少) 后台处理不需要在应用程序范围之外运行,因为应用程序将始终处于打开状态(我计划将其作为默认启动器) 以下是我的要求: 某

我有一个Android“购物车”应用程序,供商业客户下单(企业对企业)。我想在后台运行一个任务来同步项目和订单。但我很难弄清楚我应该使用多少后台任务选项(异步任务、服务、同步适配器、Jetpack Work Manager等)

首先,一些背景说明:

  • 我们向客户提供安卓手机
  • 这些手机运行的是安卓6(API 23)
  • 我不担心电池寿命,因为这些手机一次只能使用一个小时(或更少)
  • 后台处理不需要在应用程序范围之外运行,因为应用程序将始终处于打开状态(我计划将其作为默认启动器)
以下是我的要求:

  • 某些同步任务应每隔几秒钟运行一次(订单),其他同步任务应每半小时运行一次(项目更新)
  • 应用程序需要能够停止并重新启动特定用户事件的后台同步(如删除和重新创建sqlite数据库)
  • 一次只能运行一个同步进程
或者,最好有:

  • 后台任务在上传订单时通知应用程序
  • 同步进程干净地关闭(允许它完成一个同步周期),而不是仅仅被终止
  • 如果应用程序可以向后台同步发送消息,那么它可以启动按需订单同步,而无需后台进程每隔几秒钟检查数据库文件以获取新订单。(我仍然希望周期性的30分钟同步运行,以实现优先级较低的项目同步)
有人想分享一下他们的推荐吗?我想知道我是否应该让一个进程一直在后台运行。通过这种方式,它可以通过sleep语句控制时间,其中一些同步每隔几秒钟处理一次,另一些同步每半小时处理一次。那么这是一种服务有意义吗


我当然感谢你的意见!非常感谢

我决定使用ScheduledExecutor服务。我不知道这是不是最好的选择。但它确实给了我最需要的东西:

  • 一次只运行一个实例
  • 我可以根据需要启动和停止
  • 它确实超出了应用程序的范围(我并不真正需要它,但拥有它可能会很好)
  • 我让Runnable类继续循环检查偏好布尔值,当我希望它终止时
  • 我在循环之间睡了几秒钟。所以每隔几秒钟我就会检查是否有任何SQLite记录需要处理
  • 对于我只希望运行较少频率的进程,我只有一个计数器来跟踪自上次运行这些进程以来执行的睡眠周期数
  • 虽然我确信还有一些更为电池友好的选项,但我并不认为这会消耗太多电池(我也不需要关心这个特定的应用)
  • WorkManager似乎不适合我,因为我不能有长时间运行的进程(超过10分钟),我希望我的后台任务能够持续运行
虽然我认为我有一个工作配置,但我仍然愿意接受任何人想要分享的想法

谢谢