Lập trình Android: vấn đề tối ưu hóa trên nhiều loại màn hình, dòng máy

Hiện tại em đang làm 1 project android nho nhỏ, khi dev thì em test trên con asus zenphone 5 , chạy rất ổn định , hiệu xuất tốt , nhưng khi publish và nhận feedback từ user thì bao nhiêu là lỗi , bể giao diện , thậm chí bị out app trên 1 số dòng samsung…
Hiện tại em đang bế tắc không biết nên fix như thế nào , thánh nào có kinh nghiệm dev cho nhiều màn hình chỉ giáo cho em với…
Thêm nữa trên mấy con samsung e bug thử thì bị lỗi out of memory do sử lí bitmap…trong khi các máy khác chạy lại ok…

Project của mình đây : Mong cấc bạn cho 1 số feedback cũng như cách giải quyết các lỗi trên…
https://play.google.com/store/apps/details?id=com.boxopen.tailieuso

2 Likes

Theo những gì mình biết thì bạn nên tạo thêm vài cái máy ảo để mô phỏng các máy ở từng phân khúc máy khác nhau. Ví dụ:

  • Máy phổ thông thì thường là màn hình 480x800, ram 1GB, heapsize 128MB.
  • Máy tầm trung thì thường là màn hình 720x1280, ram 1.5GB , heapsize 256MB.
  • Máy cao cấp thì thường là màn hình 1080x1920, ra, 2GB-3GB, heapsize 256MB, đôi khi có máy lên tới 512MB.

Mình cho bạn một vài ví dụ như thế để bạn có thể setup những máy ảo cơ bản để bạn test. Dĩ nhiên là bạn có thể tìm hiểu thêm cấu hình của các máy khác để bạn có thể test, máy tính bảng chẳng hạn. À lưu ý là máy tính bảng và điện thoại tuy có cùng phân giải nhưng ppi là khác nhau đó nha.

Thêm nữa trên mấy con samsung e bug thử thì bị lỗi out of memory do sử lí bitmap…trong khi các máy khác chạy lại ok…

Vấn đề này thường xảy ra khi bạn xử lý bitmap yêu cầu bộ nhớ nhiều. Mình nghĩ bạn đang dùng LRUCache để lưu bitmap, nên khi khai báo kích thước vùng nhớ cho nó thì bạn để ý xem app bạn cần tối thiểu bao nhiêu. Lưu ý là đa số các máy bây giờ heapsize chỉ là 256MB thôi (Máy phổ thông thì là 128MB). Nên bạn xử lý bitmap phải hết sức cẩn thận vấn đề leak memory. Bitmap nào không dùng thì phải xóa khỏi cache để dành vùng nhớ xử lý cái khác. Nếu không thì sẽ bị Out Of Memory đấy.

2 Likes

Ứng dụng của bạn khá hay, giao diện đẹp , mình đã test trên con tablet asus 7-2013, chạy khá mượt tuy nhiên còn hơi ít sách nhé… có tuyển người upload không mình xin 1 chân uploader …thấy có chức năng đổi tiền trong app kìa .ha ha :v :v

1 Like

Bạn xem câu trả lời của mình ở đây xem có giúp được gì k :smile:

Hỏi về lập trình đa màn hình trên android

1 Like

Kinh nghiệm của mình là lấy thiết kế của 1 màn hình làm chuẩn: IP 5 chẳng hạn (1136 x 640).

Từ đó tùy vào các màn hình khác nhau bạn sẽ scale các item trên màn hình tùy theo tỉ lệ đó.

Cái này bạn chỉ cần 1 bộ resource, bạn có thể giải quyết cho nhiều kích thước màn hình khác nhau.

hi vọng có ích với bạn!

1 Like

Cảm ơn bác nhé , bác có link nào về vấn đề xử lí bitmap không chia sẻ em với , em chưa nắm đươc mấy cái heapsize đó lắm… cảm ơn bác đã giúp đỡ nhé…

Mình thấy Google hướng dẫn rất chi tiết, bạn có thể đọc ở đây:

[Displaying Bitmaps Efficiently][1][1]: http://developer.android.com/training/displaying-bitmaps/index.html

@Nguyen_Thanh3 về lỗi bể giao diện thì đa phần các bạn đã nói hướng giải quyết rồi.
Tuy nhiên, mình gợi ý cho bạn thêm là: kiểu gì thì cũng phải test trên máy thật. Nếu bạn không có đủ tiền mua nhiều device thì có thể sử dụng các dịch vụ test cloud, ví dụ như của Samsung chẳng hạn (http://developer.samsung.com/remotetestlab/rtlDeviceList.action)

Ưu điểm:

  • Có thể tạo các scenario dành cho việc test tự động hàng vài ngàn thiết bị cùng 1 lúc.
  • Sử dụng rất đơn giản, miễn phí.
  • Test được cả các lỗi như memory leak, …
  • Và rất nhiều support khác nữa.
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?