美文网首页
AsyncTask面试误区

AsyncTask面试误区

作者: 东野圭吾_ | 来源:发表于2021-01-08 09:52 被阅读0次

    网上我们经常能看到这样的解释:

    AysncTask必须在UI线程中创建和执行,今天我们就来看一下。

    以下是我的测试代码,发现没问题,觉得很奇怪。

    接下来我们看看源码。它是有三个构造方法,

    最后都走到了下面这个

    此时我们会发现,在构造方法中,自动会创建主线程Handler,不管你的外部环境

    此时我们又开始怀疑网上的说发,是网上的说法错误吗,还是我们没找到真正的原因?继续查找。

    我找到了老一点的API(android-21),发现它只有一个构造方法

    点开我们发现,并没有对Handler进行处理

    我们最终发现在变量中创建了Handler

    所以说如果外部在主线程,则Handler就是主线程的,如果是在子线程创建了AsyncTask,则Handler也就会在子线程中,而Handler又与Looper挂钩,子线程又没有Looper,导致无法更新UI的。

    到此终于解开了谜团,希望能对大家有帮助。

    有什么问题的话,欢迎指正。

    源码让生活变得更美好。加油!

    相关文章

      网友评论

          本文标题:AsyncTask面试误区

          本文链接:https://www.haomeiwen.com/subject/kxpkiftx.html