在列表视图中加载联系人照片(使用CursorAdapter)非常懒散

时间:2012-01-22 21:57:57

标签: android contacts android-cursoradapter

我正在构建联系人申请表。 在主要活动中,我有一个列表视图,我在其中显示联系人。

我正在使用CursorAdapter来处理带有列表

的游标

没有照片,这一切都很好。

然而,当我尝试使用照片时,滚动变得迟钝。

调用打开输入流非常慢,即使inputStream为null且没有要加载的图像:

public static Bitmap loadContactPhoto(ContentResolver cr, long  id) 
{
   Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);
   InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);

   if (input == null) 
   {
       return null;
   }

   return BitmapFactory.decodeStream(input);
}

我该怎么办?

1 个答案:

答案 0 :(得分:0)

您是否在UI线程中加载图像.... 如果是的话,你不应该这样做,因为这会阻塞线程并使用户体验缓慢。

你应该学习延迟加载图像......试着用谷歌搜索出来....

我也不会在UI线程上进行数据库操作...尽管有人说在UI线程中做小型DB操作是可以的......我会尽可能地避免它......

检查以下链接:

Lazy load of images in ListView