Обработка полного дискового хранилища в Android

Этот вопрос немного изменился из первоначального, здесь короткая информация:

Я заполнил дисковое хранилище на эмуляторе и получил его абсолютно бесполезным - процесс android.process.acore отображает диалог "... остановился неожиданно" в цикле, поэтому в системе ничего не может быть сделано. Я не могу даже выключить его с помощью кнопки питания справа (он пытался отключиться в течение 10 минут, logcat заполнен исключениями). Отличный эмулятор, интересно, что произойдет, если это будет мое настоящее устройство.

Может быть, кто-то может уточнить причины такого поведения - должно ли это быть так?

Здесь начальный вопрос, пожалуйста, также ссылайтесь на мои изменения:

Мне любопытно обращаться с случайной ситуацией, такой как нехватка дискового хранилища на устройстве Android.

Я просмотрел примеры developer.android.com, и я вижу, что они даже не беспокоятся об обработке исключений.

Я вижу, что когда дело доходит до классов SQLite, есть несколько исключений, таких как SQLiteOutOfMemoryException, но я не могу найти никакой информации, когда и как обрабатывать эти сценарии.

Есть ли у кого-нибудь опыт:

  • bulletproofing приложение для такой резкой ситуации
  • способы проверки этого на эмуляторе
  • обратная связь от разочарованных пользователей (может быть, слышали о любых разочарованиях с примерами приложений или даже основными приложениями?)

Заранее благодарим вас за ребята.

[ Edit]

Я также сталкиваюсь с этим укусом на трекер для Android:

http://code.google.com/p/android/issues/detail?id=1653

Это нечто загадочное.. и кажется, что это призрак с 2008 года.

[ Edit2]

Alrite, с советами по комментариям: я просто сделал тест, используя:

dd if=/dev/urandom of=file

с параметрами bs и подсчетом, выбранным для размещения оставшегося пространства,

и заполнил раздел /data.

Насколько я удивлен, что Google Maps просто разбился на SQLiteFullException. На самом деле все аварии приложений - даже телефон.

Правда ли, что никто не справляется с этими исключениями? Это нормально, что эти приложения просто убиваются с помощью ".. неожиданно остановились"?

Ответ 1

То, как я справляюсь с этим, - это обработка ошибок во всех файловых операциях, чтобы приложение не просто разбилось, и я делаю файл stat (fooobar.com/questions/158046/...) в каталоге, используемом пользователем для обеспечения достаточного свободного места. Если нет, я покажу им приятное большое сообщение об ошибке.;) Как правило, сам телефон тоже будет жаловаться, поэтому рано или поздно они должны заметить проблему.

Ответ 2

Это ошибка, "память телефона заполнена!" Удалите некоторые файлы на свободное место ". У меня есть как минимум 7 концертов свободного места. Внутренняя память телефона заполнена. Не ваша карта памяти. Они полностью разделены.

Попробуйте удалить некоторые приложения, которые вам больше не нужны. А также попробуйте очистить кеш в некоторых ваших приложениях.