我正在构建一个Android应用程序,我需要定期检查BBDD值,大约每60秒检查一次。当应用程序找到它时,会向应用程序发送一个值,以更新UI中的数据值。
我的应用程序有一个名为MainActivity的Activity,它使用NavigationDrawer和supportFragmentManager中的begintsack方法来更改片段。
在这种情况下使用什么?
查看以下后
何时使用
该服务可以用于没有UI的任务,但不应该太长。如果需要执行长任务,则必须使用Service中的线程。
IntentService可以用于长任务,通常与主线程没有通信。如果需要通信,可以使用主线程处理程序或广播意图。另一种使用情况是需要回调时(意图触发的任务)。
如何触发
该服务是通过调用方法startService()来触发的。
IntentService是使用Intent触发的,它生成一个新的工作线程,并在此线程上调用onHandleIntent()方法。
从触发
服务和IntentService可以从任何线程、活动或其他应用程序组件触发。
运行
服务在后台运行,但它在应用程序的主线程上运行。
IntentService在单独的工作线程上运行。
限制/缺点
服务可能会阻塞应用程序的主线程。
IntentService无法并行运行任务。因此,所有连续的意图都将进入工作线程的消息队列,并按顺序执行。
何时停止
如果您实现了一个服务,那么您有责任在服务完成后通过调用stopServ()或stopService()来停止服务。(如果您只想提供绑定,则不需要实现此方法)。
IntentService在处理完所有启动请求后停止服务,因此您永远不必调用stopServ()。