2012-01-20 30 views
6

Giống như tiêu đề cho biết, tôi có nên vẫn đang thiết kế ứng dụng của mình với giới hạn kích thước heap 16 MB không? Lý do tôi hỏi là tôi đã phát triển một trò chơi gần đây chạy tốt trên Droid gần 2 tuổi của tôi 2. Nhưng khi tôi thử nghiệm ứng dụng của mình bằng AVD với giới hạn kích thước 16 MB, tôi đã hết lỗi bộ nhớ. Theo dõi ứng dụng của tôi với DDMS cho thấy tổng số bộ nhớ được phân bổ cho trò chơi của tôi là khoảng 20 MB. Nó không phải là một sự khác biệt lớn, nhưng nhận được trò chơi của tôi để làm việc theo giới hạn 16 MB sẽ thực sự làm tổn thương hình ảnh.Giới hạn kích thước heap của Android, chúng tôi có thực sự cần thiết kế các ứng dụng có giới hạn 16 MB không?

Bây giờ, nếu đây là năm 2008, tôi thậm chí sẽ không hỏi câu hỏi này. Nhưng đó là năm 2012, gần 4 năm sau khi G1 ra mắt. Có an toàn để nói rằng hầu hết các điện thoại được thực hiện trong năm qua cho phép các ứng dụng phân bổ hơn 16 MB bộ nhớ? Hoặc tôi có thực sự vặn vẹo bản thân mình bằng cách không thiết kế ứng dụng của tôi với giới hạn 16 MB không?

+0

Tôi đã giữ điện thoại cũ trong 5 năm. Tôi mong đợi để giữ Droid 2G của tôi trong 5 năm nữa. – Chloe

Trả lời

6

Giới hạn heap thay đổi tùy thuộc vào độ phân giải của thiết bị (và cũng có thể là các yếu tố khác). Vì vậy, trên một thiết bị có độ phân giải cao, giới hạn heap có thể là 30MB trong khi ở độ phân giải thấp G1, nó là 16MB. Nói chung, bạn nên thay đổi đồ họa của mình sao cho các thiết bị có độ phân giải thấp sử dụng đồ họa có độ phân giải thấp (chiếm ít không gian hơn) và các thiết bị có độ phân giải cao sử dụng đồ họa có độ phân giải cao (chiếm nhiều không gian hơn).

+2

Cảm ơn bạn, bài đăng của bạn đã dẫn tôi nhận ra lý do tại sao tôi đã gặp sự cố trên ứng dụng của mình trong trình mô phỏng ngay từ đầu. Tôi đã thiết lập AVD của tôi với độ phân giải màn hình lớn nhưng không tăng kích thước heap cho phù hợp. Khi tôi quay trở lại và thay đổi độ phân giải màn hình cho một cái gì đó tương tự như G1 ban đầu, trò chơi của tôi chạy hoàn hảo mà không vượt quá giới hạn kích thước heap 16 MB. – AntiWiggin

2

Có, chúng tôi vẫn cần nhưng không phải trong mọi trường hợp. Nếu bạn đang sử dụng mã nguồn gốc thì bộ nhớ được phân bổ bởi trình biên dịch c không bao gồm trong giới hạn này. Do đó, bạn có thể cung cấp thêm bộ nhớ cho thành phần thiết yếu của ứng dụng. và cách thứ hai là sử dụng Texture để vẽ hình ảnh bằng cách sử dụng bộ nhớ OpenGL.then cho các Texture này không bao gồm từ bộ nhớ bị giới hạn.

Nhưng những kỹ thuật không thể được thực hiện trong mọi trường hợp

hơn Một điều quan trọng, bạn không thể sử dụng những 30 MB hoàn toàn also.Only 30% của nó là có thể sử dụng cho một ứng dụng.

+0

"Chỉ 30% trong số đó có thể sử dụng được cho một ứng dụng". những gì về việc mở 5 ứng dụng với nhau? –

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