Intereting Posts
Сохранение растрового изображения на диск / галерею в Android 4.3 Сертификату доверяют ПК, но не на Android Android: notifyDataSetChanged () не обновляет listview после изменения ориентации Масштабирование шрифтов Android WebView iFrame Что делать, если я хочу опубликовать обновление с более высоким значением minSDK, чем тот, который представлен на рынке? Kotlin – Прерывистая ошибка «плохого файла класса» Могу ли я принудительно расширять уведомление об андроиде на Android 4.1+? Почему eclipse открывает другой эмулятор? Android-система WebView нарушает приложения Android! «Могилы отключены на JB MR2 + пользовательских сборках» Использование GData и Google Analytics на Android Устройство перестает принимать GCM, пока сеть не переключится Присоединитесь к процессу Android от Qt Creator Как определить строку на английском или персидском? В Android, как вы выбираете только контакты PHONE? Android CalendarView замедляет компоновку

Метод android finish () не очищает приложение из памяти

У меня есть активность, и я вызываю метод finish (), и действие не очищается из памяти.

После вызова finish () я вижу, что метод onDestroy () успешно выполнен (и я очищаю все мои переменные и прочее там).

Должен ли он быть очищен от памяти или от того, как работает андроид? Насколько я понимаю, жизненный цикл активности завершен.

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

Solutions Collecting From Web of "Метод android finish () не очищает приложение из памяти"

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

Лучший способ – сначала использовать finish() а затем использовать System.exit(0) чтобы очистить статические переменные. Это даст вам некоторое свободное пространство.

Многие приложения оставляют рабочие процессы и переменные, что меня злит. После того, как 30 минут использования памяти заполнены, и мне нужно запустить диспетчер задач – Lvl 2 очистить память

Это неправда, это проблемы с кузированием, которые я пробовал в течение трех лет в своих приложениях. Никогда не сбой или перезагрузка после использования Exit()

Попробуйте использовать

System.exit (0);

После вызова onDestroy () ваша деятельность обречена. Период.

При этом процесс (и, следовательно, адресное пространство), выделенный для вашего приложения, может по-прежнему использоваться другой частью вашего приложения – другой деятельностью или службой. Также возможно, что ваш процесс пуст, и ОС просто не успела его восстановить; Это не мгновенно.

Дополнительную информацию см. В документе «Процесс жизненного цикла»:
http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle

Независимо от того, если ваша активность перезапущена, ей снова придется пройти через всю последовательность запуска, начиная с onCreate (). Не предполагайте, что что-либо можно косвенно использовать повторно.

Если вам нужно закрыть приложение из субзависимости, я могу предложить вам сделать его таким образом: 1) из активности A вызывать активность B как startActivityForResult (намерение, REQUEST_CODE);

 Intent intent = new Intent() .setClass(ActivityA.this, ActivityB.class); startActivityForResult(intent, REQUEST_CODE); 

2) в действии A вы должны добавить метод:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE) { if (resultCode == RESULT_CLOSE_APPLICATION) { this.finish(); } } } 

3) в завершении операции B:

 this.setResult(RESULT_CLOSE_APPLICATION); this.finish(); 

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

 android.os.Process.killProcess(android.os.Process.myPid()); 

Но я бы не рекомендовал это для коммерческих приложений, потому что это противоречит тому, как работает система управления памятью Android.

Согласно этой презентации от Google I / O 2008, Finish также должен привести к тому, что процесс будет убит, но я написал быстрое приложение для тестирования этого и на Android 1.5, которого нет.

Как сказал Ромен (который, кстати, является инженером инструментария UI для Android), ваш процесс просто будет сидеть там, ничего не делая, поэтому беспокоиться не о чем.