2012-02-08 44 views
27

我想用所有的應用程序數據(類似於首選項)保存json文件,但我不知道限制大小是多少,因爲如果應用程序無法使用此文件,它可能無法正常工作。這是事先知道的信息,操作系統根據可用的大小爲您的應用或其預留一些空間。是否有最大尺寸的Android內部存儲分配給應用程序?

更新: 我真的不關心外部存儲,因爲並不總是在設備可用,可以改變(SD卡),我可以檢查internal storage using this但是這不是我想知道,我想什麼知道是否爲設備的內部存儲分配了內存大小?

+4

如果你有一個* JSON *文件,你擔心可能會太大,你做錯了。 – CommonsWare 2012-02-08 18:10:53

+2

即時通訊不擔心文件正在_too big_,即時通訊擔心應用程序留下的內部存儲是_too small_ – Jimmy 2012-02-08 18:23:27

回答

35

如果您使用Environment.getExternalStorageDirectory()(或API等級8及以上的Context.getExternalFilesDir())作爲您的json文件的位置,那麼我相信這個大小將受到外部存儲空間(通常是SD卡)的限制。對於大多數設備,我相信Android內置的外部文件存儲沒有固定的限制。 (內部存儲器是另一回事,設備製造商可能會施加相當嚴格的限制,可能低至所有應用程序共享的100MB)。

更新:請注意,根據compatibility definition for Android 2.3(第7.6.1節),設備應該有相當的有點內存:

設備實現必須至少有150MB的非易失性存儲可用於用戶數據。也就是說,/ data分區必須至少爲150MB。

除了上述要求,設備實現應該至少有1GB的非易失性存儲可用於用戶數據。請注意,這個更高的要求計劃在Android的未來版本中成爲最低要求。強烈建議設備實現現在符合 這些要求,否則它們可能不符合未來版本Android的兼容性。

此空間由所有應用程序共享,因此可以填滿。沒有保證每個應用程序可用的最低存儲空間。 (這樣的最低保證是毫無價值對於需要存儲超過最低的應用程序,並會爲存儲較少的應用程序的浪費。)

編輯:從compatibility definition for Android 4.0

設備實現必須至少有350MB的非易失性存儲可用於用戶數據。也就是說,/ data分區必須至少爲350MB。

compatibility definition for Android 4.3

設備實現必須具有可用於用戶數據的非易失性存儲至少512MB。也就是說,/ data分區必須至少爲512MB。

有趣的是,實現應該提供至少1GB的建議保持不變。

+0

問題已更新。 – Jimmy 2012-02-08 17:59:04

+0

@Jimmy - 我們在這裏談論的文件有多大? – 2012-02-08 18:22:05

+0

文件真的不大可以說是KB的一對,但事情是如果操作系統在某些情況下不會爲我的應用程序保留任何內容,那麼即使小文件也會成爲問題。 – Jimmy 2012-02-08 18:27:04

13

我從來沒有目睹過它限制單個應用程序,並且我已經在應用程序Files dir中保存了一些相當大(200 MB)的視頻文件進行了測試。

對於內部存儲,我認爲您只能受限於所有應用程序共享的內部存儲量。正如@Ted Hopp所提到的,在一些較老的和較低端的設備上相當小。但是在更新的和更高端的設備上,他們已經開始將其合理化,儘管該設備有很大的空間,但它仍然可以被其他應用程序佔用(因此您需要測試將會發生什麼這種情況)。

還值得指出的是,如果您使用外部存儲,如SD卡,那麼您的json文件將在技術上由用戶編輯。他們可以在文本編輯器中打開它,如果他們有任何願望,可以開始更改原始值。 (如果您選擇使用內部存儲器,這也是可能的,但它需要一個根植設備,而如果存儲在SD卡上則不需要root)

因此,如果您存儲的信息是您寧願用戶無法手動編輯,您可能需要考慮這一點。

相關問題