Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – HandlerThread vs IntentService大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想请某人解释一下,HandlerThread和Intentservice之间的主要区别是什么,以及主要的用例场景是什么?

我知道HandlerThread包含一个Looper,它管理messageQueue,由Handler提供.据我所知,你可以推送HandlerThread的任务,它将会执行.使用非UI相关的长时间运行操作非常棒,您可以通过runOnUiThread()将结果推送回UI.

相比之下,Intentservice适用于长时间运行,非uUI相关的操作,可以按顺序执行任务,当它完成调用selfStop()以完成关闭的作业时.如果一个Intentservice正在处理一个任务,当一个新的请求到达它时,它将添加到队列并处理第二个,当它完成第一个时.

从我的观点来看,他们以同样的方式做同样的工作.
假设我有一个应用程序,按钮上的用户TAP,我开始下载文件.如果用户多次点击,则新任务将排队,仅在第1次完成时启动第2次.
我该怎么用? Intentservice还是HandlerThread?

解决方法

因此,在检查HandlerThread和Intentservice的源代码后,我发现了以下内容

> Intentservie里面有一个HandlerThread实例(这是分离的工作线程)
>在执行onHandleIntent()方法调用selfStop()的Intentservice,以关闭自身(因为它正在扩展服务类).
> Intentservice是从service类本身扩展的,因此如果您愿意,可以根据需要在单独的进程中启动它.

Intentservice onCreate()方法,创建工作线程:

@Override
public 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所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。