AsycnTask 中的以下代码:
@Override
protected Boolean doInBackground(View... params) {
try{
Drawable drawPhoto = DataDatero.ImageDownload(taskPhotoName);
((ImageView)params[0]).setImageDrawable(drawPhoto);
((TextView)params[1]).setText(taskItemListText);
((TextView)params[2]).setTextColor(taskColore);
((TextView)params[2]).setText(taskItemStockText);
[...]
}
抛出 CalledFromWrongThreadException ,描述:
只有创建视图层次结构的原始线程才能接触其视图
这已经在很多问题中讨论过:例子,另一个例子;并且都得出相同的结论。
但我不仅得到了例外..
我从 List 适配器中的getView调用它,并且图像(params [0])在视图中更新,同时为文本引发异常。此外,如果我只留下 textview updates ,则文本会更新并且不会引发异常。
如果我先更新 TextView 再更新 ImageView,则某些文本和图像会更新,而某些图像则不会更新(该 imageDownload 包括 2-3 秒的网络操作)
为什么有的更新了,有的没更新?
注意:这仅在 sdk 4.0、v4 支持、api 16 仿真上进行了测试。我修复了它,我没有触及 doInBackground 中的视图第二个例子是类似的......如果 onCreate 没有完成,操作是否得到验证?