gpt4 book ai didi

java - Android中执行后台定时重复任务,以及IntentService和Runnable的区别

转载 作者:搜寻专家 更新时间:2023-11-01 09:46:15 25 4
gpt4 key购买 nike

我是一名 iOS 开发人员,最近开始进行 Android 开发。目前我需要应用程序在后台对远程资源(JSON 文件)执行重复检查,我想这样做:

  1. 应用完成启动
  2. 在Application子类中启动定时重复任务
  3. 如果远程 JSON 文件有任何变化,应用程序将被通知并相应地处理

在做了一些研究之后,我发现似乎有很多方法可以实现这一点,虽然我可以排除其中的一些,但我无法真正分辨出其余的和我应该使用的区别。

我发现要执行计划的重复任务,我可以使用以下类:

  1. ScheduledThreadPoolExecutor
  2. IntentService
  3. 报警管理器
  4. Runnable(使用 postInBackgroundDelayed/DelayedRunnable,或者 ScheduledExecutorService?)

我已经排除了使用:

  1. ScheduledThreadPoolExecutor,我读到它最适合在需要多个工作线程时使用,在我的例子中我只需要一个
  2. AlarmManager,即使应用程序未运行时也会执行此任务,而我只需要在应用程序运行时执行任务

剩下的是 IntentServiceRunnable,据我目前的理解:

  1. IntentService,需要手动启动和停止,通过向服务发送Intent来调用任务,然后广播结果
  2. Runnable,就像Objective-C中使用的block一样,在适当的时候执行一段特定的代码

除了这些还有什么区别吗?我的理解正确吗?它们都适合我的任务吗?既然如此,在选择使用哪一个之前有什么考虑吗?

谢谢!

最佳答案

要在 Android 中创建长时间运行的后台任务,您应该在您的应用程序中创建一个服务

服务在应用的主线程上执行,优先级最高的为Activity,即使用户退出应用也继续运行。

服务有以下类型:

  • 开始服务
  • 前台服务
  • 绑定(bind)服务
  • 意向服务

在服务的实现中,您应该创建另一个线程,例如使用 ScheduledThreadPoolExecuter 并将您要完成的工作委托(delegate)给该线程。

根据您的要求,您可以创建一个简单的服务扩展服务类,并在onStart() 方法,创建您的线程来为您完成所需的工作。

关于java - Android中执行后台定时重复任务,以及IntentService和Runnable的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37958908/

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