Деструктор в Singleton

Ответить
Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Деструктор в Singleton

Сообщение neoksi » 01 мар 2013, 23:42

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

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

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Деструктор в Singleton

Сообщение neoksi » 02 мар 2013, 00:01

Кто-нибудь переопределял в своих классах метод protected void finalize ()?
Нормально ли он работает?

Аватара пользователя
Finch
Сообщения: 439
Зарегистрирован: 16 июл 2012, 21:37

Re: Деструктор в Singleton

Сообщение Finch » 02 мар 2013, 15:45

Знач заходи на youtube.com в поле поиска впиши do the harlem shake и нажми enter. Отвлекись от проблемы =)
CEO of a company R.id.team

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Деструктор в Singleton

Сообщение neoksi » 02 мар 2013, 17:07

Finch
Развлеклись и хватит.
А теперь серьезно давай отвечать на вопросы. Метод protected void finalize () вызывается сборщиком мусора виртуальной машины. Но будет ли вызван этот метод при том, что система к примеру убила приложение?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Деструктор в Singleton

Сообщение rezak90 » 02 мар 2013, 18:08

Но будет ли вызван этот метод при том, что система к примеру убила приложение?
на все 100% не уверен, но на 90% уверен что не будет вызван
R.id.team
Политика на форуме запрещена

Аватара пользователя
MeTeOpA
Сообщения: 85
Зарегистрирован: 07 мар 2012, 12:50

Re: Деструктор в Singleton

Сообщение MeTeOpA » 02 мар 2013, 18:49

не будет т.к. finalize() вызывается gc а если система убивает приложение - данные остаются. Это в том случае если вы хотите их восстановить. Так работают сервисы, например. Можете в этом убедится. Переопределите onDestroy в приложении и при случае,когда система убивает процесс, в случае нужного флага, onDestroy не выполнится, а будет ждать явного вызова stopService.

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Деструктор в Singleton

Сообщение neoksi » 02 мар 2013, 23:15

MeTeOpA писал(а):не будет т.к. finalize() вызывается gc а если система убивает приложение - данные остаются. Это в том случае если вы хотите их восстановить. Так работают сервисы, например. Можете в этом убедится. Переопределите onDestroy в приложении и при случае,когда система убивает процесс, в случае нужного флага, onDestroy не выполнится, а будет ждать явного вызова stopService.
То есть имеет смысл прописать finalize() только как подстраховку, для точного сохранения данных, но все так же сохранять данные при set'ерах.

А по поводу флагов в сервисах можно поподробней, а то у меня не получалось, чтоб при убийстве процесса сервиса системой, вызывался метод onDestroy в сервисе.

Ответить