Это зависит от типа данных, которые вы хотите сохранить.
Вы упоминаете, что это кэшированные данные, поэтому я предполагаю, что не должно иметь значения, если по какой-то причине все это исчезнет. Это заставляет меня поверить, что вы должны использовать getCacheDir()
. В этом случае система удалит файлы, если кэш станет слишком большим, поэтому устройства с низким внутренним хранилищем не должны вызывать проблем (хотя в любом случае рекомендуется управлять этим самим), это относительно безопасно и будет управляться приложением так что если будет деинсталляция, она будет удалена.
getExternalCacheDir()
был введен в 2.2, поэтому он бесполезен для вас, если вы не хотите определять версию и переключаться между двумя каталогами кэширования getExternalCacheDir()
не обеспечивает безопасность, поэтому в любом случае к данным может получить доступ на SD-карту. Единственная причина, по которой я мог бы подумать, что вы, возможно, захотите это сделать, заключается в желаемом размере кэша, но из вашего описания данные не кажутся чрезмерными.
ОБНОВЛЕНО из комментария:
хотя это особый случай, когда это кеш ... но я не хочу
это должно быть удалено всякий раз, когда система хочет. Это вид кеша
что мне нужно, чтобы приложение решило, когда нужно чистить. Что является главной заботой
хранения на «обычном» внутреннем хранилище, не находясь в кеше
реж
Если вы попадаете на этап, на котором система очищает внутренние кэшированные данные из-за того, что хранилище слишком мало, вам, вероятно, следует оставить его для очистки такого рода данных приложения. Используя стандартное внутреннее хранилище данных, вы обходите эту безопасную защиту, которая, вероятно, создаст больше неприятных проблем, чем удаление данных приложения.
Если ваши данные имеют большое значение, я бы предложил попытаться определить конкретные данные, которые являются более важными, и управлять ими отдельно. Если эти данные, которые вы идентифицируете, должны быть защищены, то внутреннее хранилище с использованием файлов или базы данных (в зависимости от типа данных) кажется вашим единственным реальным вариантом, но вам следует опасаться наращивания этих данных.
ОБНОВЛЕНО из комментария
Что вы думаете об использовании SharedPreferences для сохранения строковых данных?
Есть ли ограничение на размер сохраняемой строки SharedPreference? Это (хорошо)
возможность
В прошлом я использовал общие предпочтения для хранения относительно больших строк json без проблем, я считаю, что это проще, чем использовать базы данных для примитивных типов данных (и строк), где для сохранения ограниченные значения. Однако, когда у вас есть изображения или много значений, управление становится более сложным. Также у вас будет та же проблема, что и со стандартным внутренним хранилищем с точки зрения места для хранения.