Tôi đã xem xét một số bài đăng về tải chậm nhưng tôi tin rằng vấn đề của tôi hơi khác một chút.Android: tải chậm trong Thư viện
Tôi có một thư viện (lớp của tôi mở rộng Thư viện) hiển thị 20 hình ảnh có kích thước khá lớn (400-500K mỗi hình ảnh). Tôi không thể tải tất cả chúng vào thư viện vì tôi nhận được ngoại lệ OutOfMemory.
Vì vậy, tôi đã tạo một mảng gồm 20 Bản vẽ và ban đầu có 9 phần tử đầu tiên (hình ảnh đến từ Web) và đặt tất cả phần còn lại thành rỗng. Ý định của tôi là như thế này: trên một rãnh bên phải, lấy phần tử không. 10 và đặt thành phần tử không. 0. Trên một nhánh khác đến phần tử tìm nạp phải không. 11 và đặt thành phần tử không. 1 đến null. Cùng một logic trên một fling trái.
Vấn đề là tôi có thể chạy nhanh hơn nhiều so với các thành phần được tìm nạp. bộ sưu tập của tôi có một BaseAdapter và getView của nó() trông giống như sau:
public View getView(int position, View convertView, ViewGroup parent){ ImageView imageView = new ImageView(); imageView.setDrawable(imageArray[position]; .... .... return imageView; }
Làm thế nào để nói với getView() - nếu imageArray [vị trí] vẫn còn null, hiển thị một "đang tải ..." thoại và một khi nó được thiết lập lặp lại chính mình với cùng một vị trí?
Tôi không muốn xem imageView trống và sau đó được đặt khi đang di chuyển. Tôi muốn không thể nhìn thấy hình ảnh ở tất cả cho đến khi nó được thiết lập.
Cảm ơn.
Có một bài đăng tuyệt vời trên blog Android (cũng như một số mã mẫu) trả lời câu hỏi của bạn: http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html – Ally