czy istnieje maksymalny rozmiar pamięci wewnętrznej Androida przydzielonej aplikacji?

Chcę zapisać plik json ze wszystkimi danymi aplikacji (coś podobnego do preferencji), ale nie jestem pewien, jaki jest rozmiar limitu, bo jeśli aplikacja nie może korzystać z tego pliku to prawdopodobnie nie będzie działać. czy te informacje są znane wcześniej, a system operacyjny zarezerwuje trochę miejsca dla Twojej aplikacji lub jej w oparciu o Dostępny rozmiar.

Update: Nie dbam o pamięć zewnętrzną, ponieważ nie zawsze jest dostępna w urządzeniu i może być zmieniona (karta SD) i mogę sprawdzić Wewnętrzny pamięć za pomocą tego ale to nie jest to, co chcę wiedzieć, co chcę wiedzieć, czy istnieje rozmiar pamięci przydzielonej do pamięci wewnętrznej dla urządzenia ?

Author: Community, 2012-02-08

3 answers

Jeśli używasz Environment.getExternalStorageDirectory() (lub Context.getExternalFilesDir() dla poziomu API 8 i wyżej) jako miejsce na plik json, to wierzę, że rozmiar będzie ograniczony przez dostępną przestrzeń w pamięci zewnętrznej (Zwykle karta SD). W przypadku większości urządzeń uważam, że nie ma stałych limitów wbudowanych w Androida dla zewnętrznego przechowywania plików. (Pamięć wewnętrzna to inna sprawa. Producenci urządzeń mogą nakładać dość restrykcyjne limity, być może nawet 100Mb dzielone między wszystkie aplikacje.)

Aktualizacja: Uwaga że zgodnie z definicją zgodności dla Androida 2.3 (Sekcja 7.6.1), urządzenia powinny mieć sporo pamięci:

Implementacje urządzeń muszą mieć co najmniej 150Mb nieulotnej pamięci dostępnej dla danych użytkownika. Oznacza to, że partycja / data musi mieć co najmniej 150Mb.

Poza powyższymi wymaganiami, implementacje urządzeń powinny mieć co najmniej 1 GB nieulotnej pamięci dostępnej dla danych użytkownika. Zauważ, że to planowany jest wyższy wymóg zostań twardym minimum w przyszłej wersji Androida. Wdrożenia urządzeń są zdecydowanie zachęcane do spełnienia wymagania te są obecnie wymagane, w przeciwnym razie mogą nie kwalifikować się do zgodności z przyszłą wersją systemu Android.

Ta przestrzeń jest współdzielona przez wszystkie aplikacje, więc może się wypełnić. Nie ma gwarantowanej minimalnej przestrzeni dyskowej dostępnej dla każdej aplikacji. (Takie gwarantowane minimum byłoby bezwartościowe dla aplikacji, które muszą przechowywać więcej niż minimum i byłoby marnotrawstwem dla aplikacji, które przechowują mniej.)

Edit : From the compatibility definition for Android 4.0

Implementacje urządzeń muszą mieć co najmniej 350MB nieulotnej pamięci masowej dostępnej dla danych użytkownika. Oznacza to, że partycja / data musi mieć co najmniej 350MB.

Z definicji zgodności dla Androida 4.3

Implementacje urządzeń muszą mieć co najmniej 512 MB nieulotnej pamięci dostępnej dla danych użytkownika. Czyli partycja / data musi mieć co najmniej 512MB.

Co ciekawe, zalecenie, że implementacje powinny zapewniać co najmniej 1GB, pozostało bez zmian.

 39
Author: Ted Hopp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-18 13:44:52

Nigdy nie byłem świadkiem tego ograniczenia jednej aplikacji, a testowałem go z zapisaniem dość dużych (200 mb) plików wideo w katalogu plików aplikacji.

Dla pamięci wewnętrznej myślę, że tylko ograniczona przez ilość pamięci wewnętrznej udostępnionej dla wszystkich aplikacji do udostępniania. Co, jak wspomniał @ Ted Hopp, jest raczej małe na niektórych starszych i niższych urządzeniach końcowych. Ale na nowszych i nowszych urządzeniach końcowych zaczęli je podbijać do rozsądnej kwoty, choć nawet jeśli urządzenie ma dużo miejsca, nadal może być zajęte przez inne aplikacje (trzeba więc przetestować, co się stanie w tym scenariuszu).

Warto również zauważyć, że jeśli używasz zewnętrznej pamięci masowej, takiej jak karta SD, Twój plik json będzie technicznie edytowalny przez użytkownika. Mogli go otworzyć w edytorze tekstu i zacząć zmieniać surowe wartości, jeśli chcieli. (Jest to również możliwe, jeśli zdecydujesz się na użycie pamięci wewnętrznej, ale wymagałoby to zrootowanego urządzenia, podczas gdy jeśli jest przechowywany na karcie SD nie wymaga roota)

Więc jeśli przechowujesz informacje, które wolisz, aby użytkownik nie miał opcji ręcznej edycji, możesz wziąć to pod uwagę.

 15
Author: FoamyGuy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-23 14:11:49

Myślę, że jest twardy limit około 3,61 GB.

Obecnie mam termux zainstalowany na mojej karcie. Termux uruchamia Terminal linuksowy, gdzie mogę zainstalować nodejs i npm. W ten sposób zasadniczo tworzymy środowisko programistyczne. Zainstalowałem pakiety bez większych problemów związanych z przestrzenią, z wyjątkiem sytuacji, gdy pamięć wewnętrzna mojego urządzenia jest naprawdę niska. Ale od niedawna. Myślę, że osiągnąłem ten limit, który doprowadził mnie do tego pytania i uderzył na tej stronie.

Moje urządzenie pamięci masowej jest daleko poza 1GB i używałem go z przestrzenią tak niską jak 200MB bez tego problemu. Ale moja instalacja termux wzrosła do 3.61 GB. Ostatnio zacząłem od przędzy i wydaje się, że przędza jest kosmicznym Wieprzem. Instalowałem pakiet i nagle się zalogował: error Could not write file "/data/data/com.termux/files/home/dev/ide/theia/yarn-error.log": "ENOSPC: no space left on device Więc zmiażdżył instalację i myślałem, że naprawdę zabrakło miejsca, ale nie. dalsza inspekcja pokazuje, że nadal mam wspomnianą przestrzeń w pamięci wewnętrznej i przędzy pochwycił 750MB, z czego npm tylko około 500MB w pamięci podręcznej. Byłem używam npm od tego czasu, ale po prostu musiałem użyć yarn, ponieważ instalacja dla Theia nie kończyła się dobrze z npm. Theia używa yarn jako menedżera pakietów. Tak więc 3.61 GB wskazuje na twardy limit dla aplikacji + danych.

Usuwając niektóre pakiety i zmniejszając trochę miejsca używanego przez inne nadmiarowe Pakiety, zyskuję miejsce na tworzenie plików i instalowanie, jak tylko chcę, ale jak tylko osiągnę 3.61 GB ponownie!!! bum!!! to jest to, nie mogę już tworzyć żadnych plików.

Myślę, że to nie jest dobrze udokumentowane, ale to się dzieje.

Używam lollipop (android 5.1)

Aby to potwierdzić, ktoś inny powinien spróbować użyć aplikacji, która tworzy naprawdę duże pliki w wewnętrznej piaskownicy. Nie w pamięci wewnętrznej, ale w jej prywatnym obszarze danych. Jestem pewien, że osiągniesz ten trudny limit.

 0
Author: Emmanuel Mahuni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-16 14:26:07