Java 在Android中执行后台计划的重复任务,以及IntentService和Runnable之间的差异

Java 在Android中执行后台计划的重复任务,以及IntentService和Runnable之间的差异,java,android,android-service,threadpoolexecutor,android-intentservice,Java,Android,Android Service,Threadpoolexecutor,Android Intentservice,我是一名iOS开发者,最近开始了Android开发。目前,我需要应用程序在后台对远程资源(JSON文件)执行重复检查,我希望: 应用程序已完成启动 在应用程序子类中启动计划的重复任务 如果远程JSON文件中有任何更改,应用程序将被注意到,并相应地进行处理 在做了一些研究之后,我发现似乎有很多方法可以实现这一点,虽然我可以排除其中一些方法,但我真的无法区分其他方法和我应该使用的方法之间的区别 我发现要执行计划的重复任务,可以使用以下类: ScheduledThreadPoolExecutor In

我是一名iOS开发者,最近开始了Android开发。目前,我需要应用程序在后台对远程资源(JSON文件)执行重复检查,我希望:

  • 应用程序已完成启动
  • 在应用程序子类中启动计划的重复任务
  • 如果远程JSON文件中有任何更改,应用程序将被注意到,并相应地进行处理
  • 在做了一些研究之后,我发现似乎有很多方法可以实现这一点,虽然我可以排除其中一些方法,但我真的无法区分其他方法和我应该使用的方法之间的区别

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

  • ScheduledThreadPoolExecutor
  • IntentService
  • AlarmManager
  • Runnable
    (带有
    postInBackgroundDelayed
    /
    DelayedRunnable
    ,或者可能是
    ScheduledExecutorService
    ?)
  • 我已经排除了使用:

  • ScheduledThreadPoolExecutor
    ,我已经了解到,当需要多个工作线程时,最好使用它,在我的情况下,我只需要一个工作线程
  • AlarmManager
    ,即使应用程序未运行,也会执行此操作,而我只需要在应用程序运行时执行任务
  • 就我目前的理解而言,剩下的是
    IntentService
    Runnable

  • IntentService
    ,需要手动启动和停止,通过向服务发送意图来调用任务,然后广播结果
  • Runnable
    ,与Objective-C中使用的块一样,是在适当时间执行的特定代码段
  • 除了这些,它们之间还有什么区别吗?我的理解正确吗?它们都适合我的任务吗?如果是这样的话,在选择使用哪一种之前有什么考虑吗


    谢谢

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

    服务在应用程序的主线程上执行,优先级最高的是活动,即使用户退出应用程序,服务也会继续运行

    服务有以下类型:

    • 启动服务
    • 前台服务
    • 绑定服务
    • 意向服务
    在服务的实现中,您应该创建另一个线程,例如使用ScheduledThreadPoolExecuter,并将要完成的工作委托给该线程

    对于您的需求,您可以创建一个简单的服务扩展服务类,并在onStart()方法中,创建线程来为您做所需的工作