2015-07-01 8 views
0

Я реализую приложение, которое имеет несколько действий и основан на фрагментах. То, что я встретил, - это, если я начну заниматься и перейду между фрагментами, и теперь, если я нажму кнопку домой на главный экран. Затем я начинаю использовать приложения, потребляющие память. Когда я возвращаюсь к своему приложению, я могу знать, что он был воссоздан, а фрагмент восстановлен. Но когда я нажимаю «назад», стек назад фрагмента кажется неправильным, и пользовательская анимация между фрагментами также больше не затрагивается.Активность/фрагмент Android воссоздается при низкой памяти

В моем случае я не хочу, чтобы система воссоздавалась, когда возвращалась из памяти. Есть ли способ принудительно перезапустить перезагрузку при низкой памяти вместо воссоздания активности?

ответ

0

Как вы, вероятно, знаете, лучшим решением было бы исправить ваши действия, чтобы они правильно обрабатывали события жизненного цикла и сохраняли/восстанавливали состояние. Затем, когда ваше приложение переходит в фоновый режим и возвращается на передний план, пользователь видит приложение, когда он/она оставил его. Это лучший пользовательский интерфейс и способ работы в многозадачном режиме Android.

Если вы отчаянно нуждаетесь в обходном пути, подумайте об использовании метода Activity onTrimMemory(). Этот метод вызывается с целочисленным кодом, который сообщает об изменениях в состоянии активности, например, когда активность больше не видна и где приложение входит в список недавно используемых приложений. Например, вы можете проверить на TRIM_MEMORY_UI_HIDDEN и позвонить finish(), чтобы завершить действие.

Опять же, это не предпочтительное решение, просто быстрое исправление.

+0

Я также сталкиваюсь с теми же проблемами, когда активность будет создаваться снова фрагменты вспылили .Что является идеальным решением в этом case.How сохранить фрагменты в условиях низкой памяти? – Prateek

0

Вы также можете использовать onLowMemory(), если вы используете уровень API 13 или меньше:

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

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

Предпочтительно вы должны реализовать onTrimMemory (int) от ComponentCallbacks2 для постепенной выгрузки ресурсов на основе различных уровней требований к памяти. Этот API доступен для уровня API 14 и выше, поэтому вы должны использовать этот метод onLowMemory() как резерв для более старых версий, который можно обрабатывать так же, как onTrimMemory (int), с уровнем TRIM_MEMORY_COMPLETE.

Для получения дополнительной информации: http://developer.android.com/reference/android/app/Activity.html