使用 ViewCacheStuffer 自定义弹幕样式偶现空指针错误
Author: mzw1004Created May 23, 2017Updated Apr 17, 2025
自定义布局中使用了 TextView ,在 workerthread 中进行 measure 时,会有概率出现空指针异常,版本为 0.8.3 ,错误日志如下:
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.text.Layout.getLineCount()' on a null object reference
at android.widget.TextView.onMeasure(TextView.java:7312)
at android.view.View.measure(View.java:18948)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5976)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1486)
at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1129)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:649)
at android.view.View.measure(View.java:18948)
at master.flame.danmaku.danmaku.model.android.ViewCacheStuffer$ViewHolder.measure(ViewCacheStuffer.java:28)
at master.flame.danmaku.danmaku.model.android.ViewCacheStuffer.measure(ViewCacheStuffer.java:85)
at master.flame.danmaku.danmaku.model.android.AndroidDisplayer.measure(AndroidDisplayer.java:2526)
at master.flame.danmaku.danmaku.model.BaseDanmaku.measure(BaseDanmaku.java:235)
at master.flame.danmaku.danmaku.model.R2LDanmaku.measure(R2LDanmaku.java:113)
at master.flame.danmaku.controller.CacheManagingDrawTask$CacheManager$CacheHandler.a(CacheManagingDrawTask.java:865)
at master.flame.danmaku.controller.CacheManagingDrawTask$CacheManager$CacheHandler.a(CacheManagingDrawTask.java:939)
at master.flame.danmaku.controller.CacheManagingDrawTask$CacheManager$CacheHandler.handleMessage(CacheManagingDrawTask.java:550)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:150)
at android.os.HandlerThread.run(HandlerThread.java:61)Source: bilibili/DanmakuFlameMaster