我们应该在Service,intentservice,runnable和thread之间使用哪一个?

时间:2015-03-25 09:13:17

标签: android multithreading

我正在构建一个Android应用程序,我需要定期检查一个BBDD值,大约每60秒一次。当应用找到它时,将向app发送一个值以更新UI中的数据值。

我的应用程序有一个名为MainActivity的Activity,并使用NavigationDrawer和来自supportFragmentManager的begintransaction方法更改片段。

在这种情况下使用什么?

1 个答案:

答案 0 :(得分:0)

查看以下post

何时使用?

该服务可用于没有UI的任务,但不应太长。如果需要执行长任务,则必须使用Service中的线程。

IntentService可用于长任务,通常不与主线程通信。如果需要通信,可以使用主线程处理程序或广播意图。另一种使用情况是需要回调(Intent触发任务)。

如何触发?

通过调用方法startService()来触发服务。

使用Intent触发IntentService,它会生成一个新的工作线程,并在此线程上调用onHandleIntent()方法。

触发

可以从任何线程,活动或其他应用程序组件触发Service和IntentService。

运行

服务在后台运行,但它在应用程序的主线程上运行。

IntentService在一个单独的工作线程上运行。

限制/缺点

服务可能会阻止应用程序的主线程。

IntentService无法并行运行任务。因此,所有连续的意图将进入工作线程的消息队列,并将按顺序执行。

什么时候停止?

如果您实现了服务,则您有责任在完成工作后通过调用stopSelf()或stopService()来停止服务。 (如果您只想提供绑定,则无需实现此方法。)

IntentService在处理完所有启动请求后停止服务,因此您永远不必调用stopSelf()。