android invalidate和postinvalidate源码分析

Posted 坚持v

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android invalidate和postinvalidate源码分析相关的知识,希望对你有一定的参考价值。

postinvalidate源码分析

view中

public void postInvalidate() {
        postInvalidateDelayed(0);
    }
    public void postInvalidateDelayed(long delayMilliseconds) {
        // We try only with the AttachInfo because there\'s no point in invalidating
        // if we are not attached to our window
        final AttachInfo attachInfo = mAttachInfo;
        if (attachInfo != null) {
            attachInfo.mViewRootImpl.dispatchInvalidateDelayed(this, delayMilliseconds);
        }
    }

    public void dispatchInvalidateDelayed(View view, long delayMilliseconds) {
        Message msg = mHandler.obtainMessage(MSG_INVALIDATE, view);
        mHandler.sendMessageDelayed(msg, delayMilliseconds);
    }

  switch (msg.what) {
            case MSG_INVALIDATE:
                ((View) msg.obj).invalidate();
                break;

其他的和invalidate一样,着我们就可以看到了,postinvalidate在主线程和非主线程中都可以调用,但是Invalidate不能直接在线程中调用



作者:Peakmain
链接:https://www.jianshu.com/p/6c5d65009ba1

以上是关于android invalidate和postinvalidate源码分析的主要内容,如果未能解决你的问题,请参考以下文章

android中Invalidate和postInvalidate的差别

android中Invalidate和postInvalidate的区别

android invalidate和postinvalidate源码分析

Android开发 View的UI刷新Invalidate和postInvalidate

android中Invalidate和postInvalidate的区别

源码分析篇 - Android绘制流程requestLayout()与invalidate()流程分析