2012-02-08 31 views
27

Tôi muốn lưu một tập tin json với tất cả các dữ liệu ứng dụng (một cái gì đó tương tự như sở thích) nhưng im không chắc chắn kích thước giới hạn là gì, bởi vì nếu ứng dụng không thể sử dụng tập tin này nó sẽ không hoạt động. là thông tin này được biết trước và hệ điều hành dự trữ một số không gian cho ứng dụng của bạn hoặc dựa trên kích thước có sẵn.có kích thước tối đa cho bộ nhớ trong Android được phân bổ cho ứng dụng không?

Cập nhật: Tôi không thực sự quan tâm đến bộ nhớ ngoài vì không phải lúc nào cũng có trong thiết bị và có thể thay đổi (thẻ SD) và tôi có thể kiểm tra internal storage using this nhưng đây không phải là điều tôi muốn biết biết liệu có kích thước bộ nhớ được cấp cho bộ nhớ trong cho thiết bị không?

+4

Nếu bạn có tệp * JSON * mà bạn lo lắng có thể quá lớn, bạn đang làm sai. – CommonsWare

+2

im không lo lắng về các tập tin được _too big_, im lo lắng rằng lưu trữ nội bộ còn lại cho các ứng dụng là _too small_ – Jimmy

Trả lời

35

Nếu bạn sử dụng Environment.getExternalStorageDirectory() (hoặc Context.getExternalFilesDir() cho API cấp 8 trở lên) làm vị trí cho tệp json, thì tôi tin kích thước sẽ bị giới hạn bởi dung lượng trống trong bộ nhớ ngoài (thường là thẻ SD). Đối với hầu hết các thiết bị, tôi tin rằng không có giới hạn cố định nào được tích hợp vào Android để lưu trữ tệp bên ngoài. (Bộ nhớ trong là một vấn đề khác. Các nhà sản xuất thiết bị có thể áp đặt các giới hạn khá hạn chế, có thể thấp tới 100MB ở tất cả các ứng dụng.)

CẬP NHẬT: Lưu ý rằng thiết bị phải có khá một chút bộ nhớ:

Triển khai thiết bị PHẢI có ít nhất 150MB bộ nhớ không bay hơi sẵn có cho dữ liệu người dùng. Tức là, phân vùng/dữ liệu phải có ít nhất 150MB.

Ngoài các yêu cầu ở trên, triển khai thiết bị NÊN có ít nhất 1 GB bộ nhớ không dễ bay hơi có sẵn cho dữ liệu người dùng. Lưu ý rằng yêu cầu cao hơn này được lên kế hoạch để trở thành mức tối thiểu khó trong phiên bản Android trong tương lai. Triển khai thiết bị được khuyến khích mạnh mẽ đáp ứng các yêu cầu này ngay bây giờ, nếu không chúng có thể không đủ điều kiện để tương thích với phiên bản Android trong tương lai.

Không gian này được tất cả các ứng dụng dùng chung để có thể lấp đầy. Không có bộ nhớ tối thiểu được bảo đảm có sẵn cho mỗi ứng dụng. (Tối thiểu đảm bảo như vậy sẽ là vô giá trị cho các ứng dụng cần lưu trữ nhiều hơn mức tối thiểu và sẽ là một sự lãng phí cho các ứng dụng lưu trữ ít hơn.)

Sửa: Từ compatibility definition for Android 4.0

triển khai thiết bị phải có ít nhất 350MB bộ nhớ không bay hơi sẵn có cho dữ liệu người dùng. Tức là, phân vùng/dữ liệu PHẢI có ít nhất 350MB.

Từ việc triển khai thiết bị compatibility definition for Android 4.3

PHẢI có ít nhất 512MB dung lượng lưu trữ không dễ bay hơi có sẵn cho dữ liệu người dùng. Đó là, phân vùng/dữ liệu PHẢI có ít nhất 512MB.

Điều thú vị là đề xuất triển khai NÊN cung cấp ít nhất 1 GB vẫn giữ nguyên.

+0

Câu hỏi được cập nhật. – Jimmy

+0

@Jimmy - Chúng ta đang nói một tệp lớn đến mức nào? –

+0

các tập tin không phải là thực sự lớn cho phép nói vài KB nhưng điều là nếu hệ điều hành sẽ không dự trữ bất cứ điều gì cho ứng dụng của tôi trong một số trường hợp thì ngay cả các tập tin nhỏ sẽ là một vấn đề. – Jimmy

13

Tôi chưa bao giờ chứng kiến ​​nó giới hạn một ứng dụng đơn lẻ, và tôi đã thử nghiệm nó bằng cách lưu một số tệp video khá lớn (200 mb) trong thư mục Tệp ứng dụng trước đó.

Để lưu trữ nội bộ, tôi cho rằng bạn chỉ bị giới hạn bởi dung lượng lưu trữ nội bộ có sẵn cho tất cả các ứng dụng để chia sẻ. Mà như @Ted Hopp được đề cập là khá nhỏ trên một số thiết bị đầu cuối và thấp hơn. Nhưng trên các thiết bị đầu cuối mới hơn và cao hơn, chúng đã bắt đầu tăng lên đến mức hợp lý, mặc dù thiết bị có nhiều không gian nhưng vẫn có thể được các ứng dụng khác chiếm dụng (vì vậy bạn cần kiểm tra điều gì sẽ xảy ra kịch bản này). Nó cũng là giá trị chỉ ra rằng nếu bạn sử dụng lưu trữ bên ngoài như thẻ SD sau đó tập tin json của bạn về mặt kỹ thuật sẽ có thể chỉnh sửa bởi người sử dụng. Họ có thể mở nó trong một trình soạn thảo văn bản và bắt đầu thay đổi các giá trị thô nếu họ có bất kỳ mong muốn nào. (Điều này cũng có thể nếu bạn chọn sử dụng bộ nhớ trong, nhưng nó sẽ yêu cầu một thiết bị gốc, trong khi nếu nó được lưu trữ trên thẻ SD sẽ không yêu cầu root)

Vì vậy, nếu bạn đang lưu trữ thông tin mà bạn muốn người dùng không có tùy chọn chỉnh sửa theo cách thủ công, bạn có thể muốn xem xét điều đó.

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