Android мало памяти: нет больше фонового процесса ??Нужна помощь - PullRequest
3 голосов
/ 06 января 2011

Я столкнулся с проблемой нехватки памяти.Low memory:no more background process А вот и сценарий.

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

После третьего уровня есть еще два уровня, для которых будут извлекаться данные из веб-сервисов,

И это вызывает ошибку нехватки памяти.

Как мне избавиться от раствора?

Редактировать: После некоторого раскопок я обнаружил, что ГХпытается (убить или) перезапустить в случае, если у него уже произошел сбой com.android.inputmethod.latin/.latinIME службы.Следует отметить, что приложение переведено на французский и итальянский языки, но на этом экране нет текста для перевода, помогает ли эта информация ??

Редактировать 2: После подробного изученияиз traceview я обнаружил, что все текстовые представления имеют собственные шрифты.(Существует вызов TypeFace.createFromAsset ()), который вызывает сбой IMO.

И проблема заключается в том, что я должен сохранить шрифты .... Можно ли избежать сбоя и получить шрифты ?? (Потому что я думаю, что ответнет: но все еще жду некоторых мнений)

Edit 3 : после удаления пользовательских шрифтов производительность приложения намного лучше.Следовательно, я могу подозревать, что шрифт является единственным виновником здесь.И именно поэтому я редактирую вопрос.Я использую шрифт helvetica.

Может ли использование внешних шрифтов вызвать сбой приложения или нехватку памяти?Если да, можете ли вы описать причину более подробно?

Спасибо

Ответы [ 2 ]

11 голосов
/ 10 февраля 2011

Если вы используете код, похожий на:

Typeface font = Typeface.createFromAsset(getContext().getAssets(),
"fonts/Helvetica.ttf");

попробуйте сделать "шрифт" глобальной переменной, чтобы он загружался только один раз. В противном случае он может быть загружен повторно, быстро занимая память. См. Это сообщение для более подробной информации

0 голосов
/ 08 февраля 2011

Ну, вопрос немного неясен, чтобы ответить:

  1. После каждого уровня - переключаетесь ли вы / начинаете на другое занятие?Если это так, вы не должны нигде хранить ссылки на старую деятельность.В противном случае это может вызвать проблемы OOM
  2. Полагаю, вы извлекаете данные, используя какой-то Cursor подобный объект.Cursor - это очень трудоемкие объекты, поэтому лучше не просто закрывать Cursor, но также вызывать Cursor.deactivate()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...