Android执行后台定时重复任务,IntentService和Runnable的区别
Perform background scheduled repeating task in Android, and differences between IntentService and Runnable
我是一名 iOS 开发人员,最近开始 Android 开发。目前我需要应用程序在后台对远程资源(JSON 文件)执行重复检查,我想这样做:
- 应用程序完成启动
- 在 Application 子类中启动计划的重复任务
- 如果远程 JSON 文件有任何变化,应用程序将被通知并相应地处理它
经过一些研究,我发现似乎有很多方法可以实现这一点,虽然我可以排除其中的一些,但我无法真正分辨出其余的和我应该使用的区别。
我发现要执行计划的重复任务,我可以使用以下 类:
ScheduledThreadPoolExecutor
IntentService
AlarmManager
Runnable
(postInBackgroundDelayed
/DelayedRunnable
,或者 ScheduledExecutorService
?)
我已经排除了使用:
ScheduledThreadPoolExecutor
,我读到这最适用于需要多个工作线程的情况,在我的例子中我只需要一个
AlarmManager
,即使应用程序不是运行,也会执行此任务,而我只需要在应用程序运行 时执行任务
其余的 IntentService
和 Runnable
,据我目前的理解:
IntentService
,需要手动启动和停止,通过向服务发送Intent来调用任务,然后广播结果
Runnable
,如Objective-C中使用的块,在适当的时间执行的特定代码段
除了这些还有什么区别吗?我的理解正确吗?它们都适合我的任务吗?既然如此,在选择使用哪一个之前有什么考虑吗?
谢谢!
要在 Android 中创建 long-运行ning 后台任务,您应该在您的应用程序中创建一个 Service。
服务在应用的主线程上执行,最高优先级为Activity,即使用户退出应用也继续运行。
服务有以下类型:
- 开始服务
- 前台服务
- 绑定服务
- 意图服务
在服务的实现中,您应该创建另一个线程,例如使用 ScheduledThreadPoolExecuter 并将您要完成的工作委托给该线程。
根据您的要求,您可以创建一个简单的服务,扩展服务class,并在 onStart() 方法中,创建您的线程来为您完成所需的工作。
我是一名 iOS 开发人员,最近开始 Android 开发。目前我需要应用程序在后台对远程资源(JSON 文件)执行重复检查,我想这样做:
- 应用程序完成启动
- 在 Application 子类中启动计划的重复任务
- 如果远程 JSON 文件有任何变化,应用程序将被通知并相应地处理它
经过一些研究,我发现似乎有很多方法可以实现这一点,虽然我可以排除其中的一些,但我无法真正分辨出其余的和我应该使用的区别。
我发现要执行计划的重复任务,我可以使用以下 类:
ScheduledThreadPoolExecutor
IntentService
AlarmManager
Runnable
(postInBackgroundDelayed
/DelayedRunnable
,或者ScheduledExecutorService
?)
我已经排除了使用:
ScheduledThreadPoolExecutor
,我读到这最适用于需要多个工作线程的情况,在我的例子中我只需要一个AlarmManager
,即使应用程序不是运行,也会执行此任务,而我只需要在应用程序运行 时执行任务
其余的 IntentService
和 Runnable
,据我目前的理解:
IntentService
,需要手动启动和停止,通过向服务发送Intent来调用任务,然后广播结果Runnable
,如Objective-C中使用的块,在适当的时间执行的特定代码段
除了这些还有什么区别吗?我的理解正确吗?它们都适合我的任务吗?既然如此,在选择使用哪一个之前有什么考虑吗?
谢谢!
要在 Android 中创建 long-运行ning 后台任务,您应该在您的应用程序中创建一个 Service。
服务在应用的主线程上执行,最高优先级为Activity,即使用户退出应用也继续运行。
服务有以下类型:
- 开始服务
- 前台服务
- 绑定服务
- 意图服务
在服务的实现中,您应该创建另一个线程,例如使用 ScheduledThreadPoolExecuter 并将您要完成的工作委托给该线程。
根据您的要求,您可以创建一个简单的服务,扩展服务class,并在 onStart() 方法中,创建您的线程来为您完成所需的工作。