ОнДестрой отсутствует. Автозаполнение мне не помогает
Я хотел бы вызвать onDestroy() в конце моей деятельности.
Вот что я положил:
@Override
protected void onDestroy()
{
unbindDrawables(findViewById(R.id.rootView));
super.onDestroy();
System.gc();
}
Но это никогда не называется. Действительно, когда я использую автозаполнение, onDestroy никогда не появляется... но onPause, onCreate, onStop .... да
Так я что-то здесь скучаю? Я мог бы быть таким глупым в конце концов...
3 ответа
Вам следует позвонить finish()
,
onDestroy вызывается автоматически, хотя вы не должны полагаться на его вызов.
OnDestroy():
Последний звонок, который вы получите до того, как ваша деятельность будет уничтожена. Это может произойти либо из-за того, что действие заканчивается (кто-то вызвал finish() на нем, либо из-за того, что система временно уничтожает этот экземпляр действия для экономии места. Вы можете различить эти два сценария с помощью метода isFinishing().
ОнДестрой может не называться
Примечание: не рассчитывайте, что этот метод вызывается как место для сохранения данных! Например, если действие редактирует данные в поставщике контента, эти изменения должны быть зафиксированы либо в onPause(), либо в onSaveInstanceState(Bundle), а не здесь. Этот метод обычно реализуется для освобождения ресурсов, таких как потоки, которые связаны с действием, так что уничтоженное действие не оставляет таких вещей, пока остальная часть его приложения все еще выполняется. Существуют ситуации, когда система просто убивает процесс хостинга действия, не вызывая этот метод (или любой другой) в нем, поэтому его не следует использовать для выполнения действий, которые должны остаться после завершения процесса.
Производные классы должны вызывать реализацию этого метода в суперклассе. Если они этого не сделают, будет выдано исключение.
Спасибо всем за вашу помощь. Теперь я понимаю, что onDestroy может не называться.
Я не знаю почему, но теперь Eclipse подскажет мне метод onDestroy. Так называется, но не там, где я хочу.