我正在构建一个Android应用程序,并且我需要定期检查BBDD值,大约每60秒检查一次。当应用程序找到它时,会将一个值发送到应用程序以更新UI中的数据值。我们应该在Service,intentservice,runnable和thread之间使用哪一个?
我的应用程序有一个名为MainActivity的Activity,并使用NavigationDrawer和begintransaction方法从supportFragmentManager更改片段。
在这种情况下使用什么?
我正在构建一个Android应用程序,并且我需要定期检查BBDD值,大约每60秒检查一次。当应用程序找到它时,会将一个值发送到应用程序以更新UI中的数据值。我们应该在Service,intentservice,runnable和thread之间使用哪一个?
我的应用程序有一个名为MainActivity的Activity,并使用NavigationDrawer和begintransaction方法从supportFragmentManager更改片段。
在这种情况下使用什么?
看看下面的post
何时使用?
该服务可以用于没有UI的任务,但不应该太长。如果您需要执行长时间的任务,则必须在Service中使用线程。
IntentService可用于通常没有与主线程通信的长时间任务。如果需要通信,可以使用主线程处理程序或广播意图。另一种使用情况是需要回调(意图触发任务)。
如何触发?
该服务由调用方法startService()触发。
IntentService使用Intent触发,它产生一个新的工作线程,并在该线程上调用onHandleIntent()方法。
触发从
的服务和IntentService可以从任何线程,活性或其它应用程序组件触发。
运行在
的服务在后台运行,但其上运行的应用程序的主线程。
IntentService在单独的工作线程上运行。
局限/缺点
的服务可能阻止该应用程序的主线程。
IntentService无法并行运行任务。因此,所有连续的意图都将进入工作线程的消息队列并将按顺序执行。
何时停止?
如果您实施服务,则通过调用stopSelf()或stopService()完成工作后,您有责任停止该服务。 (如果你只想提供绑定,你不需要实现这个方法)。
IntentService在处理完所有启动请求后停止服务,因此您不必调用stopSelf()。
谢谢,这是他们之间差异的完美解释。我已经知道了这些差异,我的问题的目的是知道在一般意见下哪个是我的应用程序的最佳选择。对不起我的语法错误。 – DaSound 2015-03-25 11:11:41