我们在Service、IntentService、Runnable和Thread之间应该选择哪一个?
我们在Service、IntentService、Runnable和Thread之间应该选择哪一个?
这个问题已经有了答案:
我正在构建一个Android应用程序,我需要定期检查BBDD值,大约每60秒。当应用程序找到该值时,将发送一个值到应用程序以更新UI中的数据值。
我的应用程序有一个名为MainActivity的活动,并使用来自支持FragmentManager的begintransaction方法更改片段与NavigationDrawer。
在这种情况下使用什么?
admin 更改状态以发布 2023年5月22日
查看以下文章
何时使用?
Service可用于没有UI的任务,但不能太长。如果需要执行长时间的任务,则必须在Service内使用线程。
IntentService通常用于长时间的任务,通常没有与主线程的通信。如果需要通信,可以使用主线程处理程序或广播意图。需要回调的另一种用法是(由Intent触发的任务)。
如何触发?
通过调用startService()方法来触发服务。
使用意图触发IntentService,它会生成一个新的工作线程,并在该线程上调用onHandleIntent()方法。
触发源
Service和IntentService可以从任何线程、活动或其他应用程序组件触发。
运行在
服务在后台运行,但在应用程序的主线程上运行。
IntentService在一个单独的工作线程上运行。
限制/缺点
服务可能会阻止应用程序的主线程。
IntentService无法并行运行任务。因此,所有连续的意图都将进入工作线程的消息队列中,并按顺序执行。
何时停止?
如果实现了一个Service,则负责在工作完成后调用stopSelf()或stopService()来停止服务。(如果您只想提供绑定,则无需实现此方法。)
IntentService在处理完所有启动请求之后停止服务,因此您永远不需要调用stopSelf()。