Open mzw1004 opened 7 years ago
同学,我也遇到同样的问题,请问你解决了吗?如何解决的?谢谢
我放弃使用 ViewCacheStuffer 了,最后用自定义的 BaseCacheStuffer
哦,我刚想到可以重写ViewCacheStuffer的measure方法,自己做处理,比如加异常捕捉。
v0.9.12依然有这个问题,关注中
这个问题解决了嘛?
这个问题是必现吗,有复现步骤吗
@zourb 印象中不是必现,多添加几条弹幕会有概率出现。
我也发现了
自定义 ViewHolder 继承 ViewCacheStuffer.ViewHolder 可以保持不崩,但崩溃原因没找到。代码如下:
public static class MyViewHolder extends ViewCacheStuffer.ViewHolder {
private final View mItemView;
private final GradientTextView mGtvText;
public MyViewHolder (View itemView) {
super(itemView);
mItemView = itemView;
mGtvText = itemView.findViewById(R.id.gtv_danmaku_normal);
}
@Override
public void measure(int widthMeasureSpec, int heightMeasureSpec) {
try {
super.measure(widthMeasureSpec, heightMeasureSpec);
} catch (Exception e) {
Log.d("[jianglin]", "MyViewHolder.measure: CRASH!");
Log.d("[jianglin]", "MyViewHolder.measure: " + e.getMessage());
}
}
}
@jiangzhuoyan1984
你有没有发现有的时候会出现测量失败 System.err 的消息, 导致界面显示问题
目前会在安卓12/13的机器上崩在系统底层,不知道是什么原因导致的
2
3
4
5
6
7
8
9 java: 10 android.graphics.text.MeasuredData.boringLayoutUseMeasuredDataDoFLayout(MeasuredData.java:119) 11 android.graphics.Paint.boringLayoutUseMeasuredDataDoFLayout(Paint.java:3525) 12 android.text.BoringLayout.isBoring(BoringLayout.java:637) 13 android.widget.TextView.onMeasure(TextView.java:10231) 14 androidx.appcompat.widget.AppCompatTextView.onMeasure(TbsSdkJava:2) 15 android.view.View.measure(View.java:26980) 16 android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7259) 17 android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1580) 18 android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1211) 19 android.widget.LinearLayout.onMeasure(LinearLayout.java:730) 20 android.view.View.measure(View.java:26980) 21 master.flame.danmaku.danmaku.model.android.k$a.e(TbsSdkJava:1)
自定义布局中使用了 TextView ,在 workerthread 中进行 measure 时,会有概率出现空指针异常,版本为 0.8.3 ,错误日志如下: