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