ViewTreeObserver.OnPreDrawListener 导致的app黑屏

问题描述

概率出现在首页黑屏了, 神奇的是仍然可以上下滑, 没有anr, 有些页面也可以响应点击事件.

问题分析

onPreDraw如果一直返回false, 导致整个view树的重构流程不能完成.

解决方案

  1. 遇到异常场景, 要在onPreDraw()return时, 一定要return true;
  2. 及时在onPreDraw()中getViewTreeObserver().removeOnPreDrawListener(this);
  3. 没有特殊原因, 最终return true就好了.

链接

https://www.jianshu.com/p/4f68d62c809b

OnPreDrawListener接口是在绘制界面前调用

  @Override
    public boolean onPreDraw() {
        et_1.setHint("set hint on onPreDraw ");
        //Return true to proceed with the current drawing pass, or false to cancel.
        //返回 true 继续绘制,返回false取消。
        return true;
    }