2012-01-22 62 views
0

正在構建聯繫人應用程序。 在主要活動中,我有一個listview,在那裏我顯示的聯繫人。在列表視圖中載入聯繫人照片(使用CursorAdapter)非常遲緩

我使用一個CursorAdapter處理塔光標列表

這一切運作良好,沒有照片。

但是,當我嘗試使用照片滾動變得呆滯。

Thc時調用打開輸入流很慢,即使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); 
} 

我能做些什麼呢?

回答

0

你正在加載UI線程中的圖像.... 如果是的話,你不應該這樣做,因爲這會阻止線程,並使用戶體驗呆滯。

你或許應該學習上的圖像延遲加載....嘗試谷歌搜索出來....

我也不會在UI線程上執行數據庫操作... eventhough有人說它是確定做UI線程小DB OPS ......我會避免它儘可能...

檢查下面的鏈接:

Lazy load of images in ListView

+0

是的,我做的UI線程。但據我所見,我的猜測是人們在Htc Sense中的應用程序也會在UI線程中加載(當你看到這些聯繫人時,圖像顯示爲immeadeatley,而不用等待它加載),所以我想 - 在那裏 - 必須是一種方式。 – dor506

+0

我真的懷疑......如果是HTC的情況......他們可能已經將圖像緩存在內存中......沒有辦法確定位圖加載時間......所以我會建議你將你的加載部分移到不同的線程中(請參閱我的回覆以瞭解如何實現此目的)... –

相關問題