2015-03-30 5 views
0

У меня случился сбой, для которого я получаю следующий отчет в Google Play.Ошибка OutOfMemory

java.lang.OutOfMemoryError: [memory exhausted] 
at dalvik.system.NativeStart.main(Native Method) 

Как вы можете видеть, не так много информации. Существует this question, который запрашивает одно и то же, но я не верю, что ответ игнорирования допустим.

Тот факт, что мое приложение в трассировке стека ничего не говорит о том, что это ОС, которая не позволяет приложению запускаться. Это означает, что мы не можем много сделать, даже если пользователи перезагрузили свои устройства, они все равно не могут открыть приложение. Мое приложение не большое: 22,20 МБ на устройстве.

См. Следующую статистику или статистику сбоев.

OOM Crash Report Stats

Что я могу сделать, чтобы исправить это или, по крайней мере, свести к минимуму шансы, что это произойдет?

+0

Работает ли приложение хорошо в режиме отладки? –

+0

Да, он отлично работает. Я не смог воссоздать эту проблему и никогда не видел ее раньше. – StuStirling

+0

Вы можете попробовать это http://stackoverflow.com/questions/11275650/how-to-increase-heap-size-of-an-android-application. Надеюсь, это поможет. –

ответ

0

Не знаю, было ли это правильным решением или нет, но оно решило мою проблему. Общая причина java.lang.OutOfMemoryError переполняет лимит кеша. Что я сделал, я очистил кэш приложения в активности запуска. Поэтому всякий раз, когда приложение запускается сначала, он очищает кеш.

Добавить этот метод вне метода onCreate вашего действия.

//Following two methods are used to clear the Cache memory of this application 
public static void deleteCache(Context context) { 
    try { 
     File dir = context.getCacheDir(); 
     if (dir != null && dir.isDirectory()) { 
      deleteDir(dir); 
     } 
    } catch (Exception e) {} 
} 

public static boolean deleteDir(File dir) { 
    if (dir != null && dir.isDirectory()) { 
     String[] children = dir.list(); 
     for (int i = 0; i < children.length; i++) { 
      boolean success = deleteDir(new File(dir, children[i])); 
      if (!success) { 
       return false; 
      } 
     } 
    } 
    return dir.delete(); 
} 

И позвони deleteCache(this); внутри из onCreate.

Смежные вопросы