我知道HandlerThread包含一个Looper,它管理messageQueue,由Handler提供.据我所知,你可以推送HandlerThread的任务,它将会执行.使用非UI相关的长时间运行 *** 作非常棒,您可以通过runOnUiThread()将结果推送回UI.
相比之下,IntentService适用于长时间运行,非uUI相关的 *** 作,可以按顺序执行任务,当它完成调用selfStop()以完成关闭的作业时.如果一个IntentService正在处理一个任务,当一个新的请求到达它时,它将添加到队列并处理第二个,当它完成第一个时.
从我的观点来看,他们以同样的方式做同样的工作.
假设我有一个应用程序,按钮上的用户TAP,我开始下载文件.如果用户多次点击,则新任务将排队,仅在第1次完成时启动第2次.
我该怎么用? IntentService还是HandlerThread?
> IntentServIE里面有一个HandlerThread实例(这是分离的工作线程)
>在执行onHandleIntent()方法后调用selfStop()的IntentService,以关闭自身(因为它正在扩展服务类).
> IntentService是从Service类本身扩展的,因此如果您愿意,可以根据需要在单独的进程中启动它.
IntentService onCreate()方法,创建工作线程:
@OverrIDepublic voID onCreate() { super.onCreate(); HandlerThread thread = new HandlerThread("IntentService[" + mname + "]"); thread.start(); mServiceLooper = thread.getLooper(); mServiceHandler = new ServiceHandler(mServiceLooper);}
IntentService自己的处理程序,在完成工作后需要终止服务:
private final class ServiceHandler extends Handler { public ServiceHandler(Looper looper) { super(looper); } @OverrIDe public voID handleMessage(Message msg) { onHandleIntent((Intent)msg.obj); stopSelf(msg.arg1); }}
在我的阅读中,IntentService是HandlerThread和Service的组合.
任何进一步的答案和解决方案都非常受欢迎!
总结以上是内存溢出为你收集整理的android – HandlerThread vs IntentService全部内容,希望文章能够帮你解决android – HandlerThread vs IntentService所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)