Android 将堆栈跟踪写入'/data/anr/traces.txt';当我做一个大桌子

Android 将堆栈跟踪写入'/data/anr/traces.txt';当我做一个大桌子,android,stack,Android,Stack,我正在用一张桌子做一个应用程序。 每行有3个textview,并且动态生成这些行 所有工作正常,但当行数超过15-20行时,我在logcat中看到此消息(大约3次): (显示表格需要几秒钟,显示的行越多,显示的时间越长) 有没有解决办法来避免这个问题,或者对于大桌子来说这是正常的 这是生成表的代码: for (Esame e : Db.risposteDate){ TableRow tr = new TableRow(this); TextView lbl1

我正在用一张桌子做一个应用程序。 每行有3个textview,并且动态生成这些行

所有工作正常,但当行数超过15-20行时,我在logcat中看到此消息(大约3次):

(显示表格需要几秒钟,显示的行越多,显示的时间越长)

有没有解决办法来避免这个问题,或者对于大桌子来说这是正常的

这是生成表的代码:

for (Esame e : Db.risposteDate){

        TableRow tr = new TableRow(this);

        TextView lbl1 = new TextView(this);
        TextView lbl2 = new TextView(this);
        TextView lbl3 = new TextView(this);
        tr.setGravity(Gravity.CENTER);
        lbl1.setGravity(Gravity.CENTER_VERTICAL);
        lbl3.setGravity(Gravity.CENTER);

        lbl1.setTextColor(android.graphics.Color.RED);
        lbl2.setTextColor(android.graphics.Color.RED);
        lbl3.setTextColor(android.graphics.Color.RED);

        lbl1.setLayoutParams( new TableRow.LayoutParams( 0, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, 1 ) );
        lbl2.setLayoutParams( new TableRow.LayoutParams( 0, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, 7 ) );
        lbl3.setLayoutParams( new TableRow.LayoutParams( 0, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, 1 ) );

        lbl1.setText(e.getDomandaNum()+"");
        lbl2.setText(Html.fromHtml(e.getTesto()+"<br />"));
        lbl3.setText(e.getRispostaData());

        tr.addView(lbl1);
        tr.addView(lbl2);
        tr.addView(lbl3);
        tl.addView(tr);

}
for(e:Db.risposteDate){
TableRow tr=新的TableRow(本);
TextView lbl1=新的TextView(本);
TextView lbl2=新的TextView(此);
TextView lbl3=新的TextView(此);
tr.setGravity(重心);
lbl1。设置重力(重力。重心垂直);
lbl3.设置重力(重心);
lbl1.setTextColor(android.graphics.Color.RED);
setextcolor(android.graphics.Color.RED);
lbl3.setTextColor(android.graphics.Color.RED);
lbl1.setLayoutParams(新的TableRow.LayoutParams(0,android.view.ViewGroup.LayoutParams.WRAP_CONTENT,1));
lbl2.setLayoutParams(新的TableRow.LayoutParams(0,android.view.ViewGroup.LayoutParams.WRAP_CONTENT,7));
lbl3.setLayoutParams(新的TableRow.LayoutParams(0,android.view.ViewGroup.LayoutParams.WRAP_CONTENT,1));
lbl1.setText(例如getDomandaNum()+);
lbl2.setText(Html.fromHtml(e.getesto()+“
”); lbl3.setText(如getRispostaData()); tr.addView(lbl1); tr.addView(lbl2); tr.addView(lbl3); tl.addView(tr); }
ANR是正常的,如果你在UI线程中做的事情花费的时间超过几毫秒-准备数据以在后台线程中显示以避免这种情况。我做了一个线程并放入for循环,但没有任何更改。你能更好地解释一下“准备数据以在后台线程中显示以避免出现这种情况”吗?如果你在UI线程中做的事情花费的时间超过几毫秒,ANR是正常的-准备数据以在后台线程中显示以避免出现这种情况。我做了一个线程并放入for循环,但没有任何更改。你能更好地解释一下“准备数据以在后台线程中显示以避免这种情况”吗
for (Esame e : Db.risposteDate){

        TableRow tr = new TableRow(this);

        TextView lbl1 = new TextView(this);
        TextView lbl2 = new TextView(this);
        TextView lbl3 = new TextView(this);
        tr.setGravity(Gravity.CENTER);
        lbl1.setGravity(Gravity.CENTER_VERTICAL);
        lbl3.setGravity(Gravity.CENTER);

        lbl1.setTextColor(android.graphics.Color.RED);
        lbl2.setTextColor(android.graphics.Color.RED);
        lbl3.setTextColor(android.graphics.Color.RED);

        lbl1.setLayoutParams( new TableRow.LayoutParams( 0, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, 1 ) );
        lbl2.setLayoutParams( new TableRow.LayoutParams( 0, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, 7 ) );
        lbl3.setLayoutParams( new TableRow.LayoutParams( 0, android.view.ViewGroup.LayoutParams.WRAP_CONTENT, 1 ) );

        lbl1.setText(e.getDomandaNum()+"");
        lbl2.setText(Html.fromHtml(e.getTesto()+"<br />"));
        lbl3.setText(e.getRispostaData());

        tr.addView(lbl1);
        tr.addView(lbl2);
        tr.addView(lbl3);
        tl.addView(tr);

}