2013-12-19 3 views
0

Хорошо, так что я совершенно новой для разработки Android, поэтому, пожалуйста, голые со мной =]]OnDestroy и Очистка

У меня есть несколько услуг и мероприятий в моем приложении.

Когда уволен метод onDestroy(), в настоящее время я устанавливаю все мои переменные равными нулю. Это освобождает память? Или Android все равно?

Кроме того, как насчет установки Threads и Runnables на нуль, вы должны это сделать?

После того, как пользователь нажал/нажал «Готово» в действии, я вызываю finish() на активность, которая затем запускает onDestroy(), и я устанавливаю переменные в нуль.

Однако, когда я иду в Application Manager>Running Services, это показывает мое приложение использует как 20-25MB оперативной памяти, это Android-прежнему держать деятельность, даже если вы звоните finish() на них?

PS: Когда я использую диспетчер задач, чтобы его убить, тогда использование памяти сокращается до 4-7 МБ.

Я надеюсь, что это имеет смысл ..

Так много вопросов?!? xD

Спасибо.

+0

о потоках? 'interrupt()' их сначала, а затем установить на 'null' – Geros

+0

Ну, я проверяю, работает ли поток, если он есть, тогда я' stop() 'его, а затем устанавливаю его в' null' – user959631

+2

@ user959631 'stop 'устарел использовать' interrrupt() '. http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#stop() – Raghunandan

ответ

1

Единственное, что нужно оставить в памяти, это ваши услуги, если вы не отвязали их, но даже тогда большинство служб могут уничтожать себя, если не выполняются никакие задачи. То есть, если это класс Service или любой такой, о котором вы говорите.

Вам не нужно обнулить переменные в OnDestroy, OnDestroy ручки, что для вас

+0

Хорошо, пожалуйста, объясните мне, почему «Диспетчер приложений» показывает, что он использует 20 МБ +, даже если вызывается 'onDestroy()'? – user959631

+0

GC обрабатывает сбор мусора. работает по метке и развертке. – Raghunandan

+0

Мне нужно будет увидеть ваш код для этого, я не волшебник;) Также вы можете проверить logcat, чтобы посмотреть, что происходит –

0

Если вы используете Bitmap avaiables, вы должны утилизировать его

+0

Если я установил' null' в переменную, она будет собрана? Например, если у меня есть эта подпрограмма: 'private boolean isGpsEnabled() { \t \t LocationManager gps = (LocationManager) oContext.getSystemService (Context.LOCATION_SERVICE); \t \t \t \t return gps.isProviderEnabled (LocationManager.GPS_PROVIDER); \t} 'Мне нужно установить' gps' в значение null? Или в конце этого метода его собирают? благодаря – user959631

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