美文网首页
Android AsyncLayoutInflater使用

Android AsyncLayoutInflater使用

作者: 周_0717 | 来源:发表于2020-02-21 20:23 被阅读0次

      作用与LayoutInflater类似,区别在与AsyncLayoutInflater在子线程中完成View的创建,在通过callback将创建的视图返回。
      核心方法:public void inflate(@LayoutRes int resid, @Nullable ViewGroup parent,@NonNull OnInflateFinishedListener callback)
    流程大致如下:

    1. 首先创建一个请求(消息),发送给内部子线程mInflateThread; step 1
    2. 子线程mInflateThread内部执行while死循环,从阻塞队列mQueue中获取消息,并通过反射创建视图; step 2
    3. 如果在子线程中创建失败,则尝试在主线程创建,并将最终结果传递给callback; step 3

      使用AsyncLayoutInflate主要有如下几个局限性:

    4. 所有构建的View创建过程中不能使用限定主线程的函数,如直接使用 Handler 或者是调用 Looper.myLooper();
    5. 异步转换出来的 View 并没有被加到parent视图中,AsyncLayoutInflater 是调用了LayoutInflater.inflate(int, ViewGroup, false),因此如果需要加到 parent视图中,还需要再手动添加;
    6. 不支持设置 LayoutInflater.Factory 或者LayoutInflater.Factory2;
    7. 缓存队列默认大小为10 ,超过了10个则会导致阻塞主线程。

    2020-02-21

    相关文章

      网友评论

          本文标题:Android AsyncLayoutInflater使用

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