我们应该在服务、意图服务、可运行和线程之间使用哪一个



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

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

在这种情况下使用什么?

查看以下后

何时使用

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

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

如何触发

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

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

触发

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

运行

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

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

限制/缺点

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

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

何时停止

如果您实现了一个服务,那么您有责任在服务完成后通过调用stopServ()或stopService()来停止服务。(如果您只想提供绑定,则不需要实现此方法)。

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

最新更新