notifyDataSetChanged()没有冻结mainthread

时间:2014-07-30 15:41:19

标签: android multithreading listview

我有listview和自定义适配器,它使用我自己的对象来绘制listitem。

另一方面,我有一个实时收集信息的服务,每0.1秒我的活动都会调用服务信息,而不是通过调用myCustomAdapter.notifyDataSetChanged()方法重绘列表视图。

这对我不好,因为对象非常大,我的UI线程冻结了一段时间,可能不到0.01秒,但仍然感觉用户体验不佳。

我更新的资源是由画布中的自定义绘图类绘制的一个圆。你们中的任何人都知道如何处理这个问题吗?有没有办法在不停止我的UI线程的情况下更新数据和重绘listview?

1 个答案:

答案 0 :(得分:3)

你应该尝试重用你的convertView,如下所示:

public View getView (int position, View convertView, ViewGroup parent){
    //inflate the view if it is null
    if( convertView == null ){
        convertView = inflater.inflate(R.layout.my_list_item, parent, false);
    }
    //make the changes on your  convertView that are changed from row to row,
    //such as a text in a TextView
    return convertView;
}