2012-07-26 27 views
12

Khi tăng lượt xem cho một danh sáchXem, có tốt hơn là có tất cả textView không có android: văn bản trong tệp .xml và tệp đó có ảnh hưởng đến tốc độ không? Còn về ViewStub, điều đó có còn nhanh hơn không?Danh sách tải nhanh hơnXem, nhanh hơn phương pháp của Chế độ xem

Khi lạm dụng LinearLayout với 8 textViews không có android: văn bản và với android: text = "@ string/abc", điều đó có thay đổi gì không? lưu ý rằng tôi đang sử dụng lại chế độ xem, vì vậy có thể chỉ có 10 bị tăng cao và sau đó sử dụng lại tôi không biết.

Tôi đang phát triển trên ZTE Blade, vì vậy that'a CPU 600MHz đơn và không phải là một lõi tứ ...

+1

nếu bạn tăng chiều cao của hàng, android phải vẽ ít đường hơn và nhanh hơn, bạn có thể biện minh bằng cách nói những người có ngón tay to có thể chọn dễ dàng hơn các hàng :) – max4ever

Trả lời

8

Bạn có thể thử điều này, không chắc chắn nó có tăng tốc hay không cho nó một shot.

Làm tăng bố cục trong chuỗi nền.

View getView(int position, View convertView, ...) { 
    View v; 
    if (convertView == null) { 
     Start a background thread to inflate your linearLayout. 
     Pass item data and view 'v' to it. 

     v = inflate a simple dummy textview; 
     return v; 
    } 
    set normal stuff to convertview here. 
    return convertView ; 
} 

Trong thread nền,

  • Bơm LinearLayout của bạn vào 'v'
  • Đặt tất cả các dữ liệu.
  • Sau đó vô hiệu hóa chế độ xem v.

    v.postInvalidate(); 
    
+0

Tôi không thể làm việc đó, v.postInvalidate() không làm bất cứ điều gì – max4ever

+0

Tôi đã cập nhật câu trả lời của mình bằng cách khác .. – Ronnie

+0

ý tưởng là tốt, nhưng tôi không thể làm cho nó hoạt động, bạn có ví dụ không của mã làm việc đơn giản ở đâu đó? – max4ever

3

này khá hữu ích khi tăng tốc xem danh sách, đặc biệt là các bit Xem Chủ: http://developer.android.com/training/improving-layouts/smooth-scrolling.html

Tôi cũng có một ZTE Blade, chúng chậm, nhưng các ứng dụng chạy tốt trên nó chạy tuyệt vời trên điện thoại 'bình thường' :)

+0

vâng tôi đang sử dụng View Holder, tự hỏi liệu các inflate có bất kỳ ảnh hưởng – max4ever

+0

Tôi không nghĩ rằng nó không, nhưng nếu các mục hàng của bạn có rất nhiều vật dụng sau đó nó sẽ làm chậm tất cả mọi thứ một chút. Bạn đang cố gắng cải thiện tốc độ cuộn? –

+0

mặc dù tôi sử dụng bộ điều hợp mà ứng dụng của tôi bị treo trong vài giây sau khi trở về Ajax và tôi điền vào danh sách có 40 hàng và tôi đang sử dụng tab galaxy galaxy, không thể tìm cách tối ưu hóa hơn – max4ever

3

Nếu bạn đang thay thế văn bản trong TextView dù sao, thì bạn không nên bận tâm Populating chúng trong XML.

Một kẻ giết người thực sự cho hiệu suất đó là hấp dẫn để làm trong các listviews đơn giản là lồng nhau linearlayouts. Với một chút công việc bất kỳ cây linearlayout có thể được thay thế bằng relativelayout.

Đảm bảo bạn không sử dụng findViewById bên ngoài if (convertView == null) {block bằng cách sử dụng kiểu ViewHolder hoặc chỉ cần đặt trong view.setTag (R.id.resId, findViewById (R.id.resID)))

Bạn đã đề cập trong nhận xét rằng bạn đang gặp phải sự chậm trễ khi trở về từ asynctask của mình. Đảm bảo bạn không tải lại bảng sau mỗi lần nhập. Thực hiện cập nhật hàng loạt nguồn dữ liệu và sau đó tải lại bảng.

Các vấn đề liên quan