Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
NEvOl
19 / 18 / 1
Регистрация: 13.08.2012
Сообщений: 734
1

Вызов метода перед завершением работы приложения

11.03.2015, 20:36. Просмотров 749. Ответов 17
Метки нет (Все метки)

Вопрос такой, есть ли какой-нибудь метод, который можно перегрузить и который будет вызываться перед закрытием программы ? (например для сохранения информации о состоянии приложения в файл и т.п.)
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2015, 20:36
Ответы с готовыми решениями:

Вызов метода при каждом открытии приложения
Мне нужно, что бы при открытии приложения вызывался определенный метод. Если...

Вызов метода в onCreate()
Здравствуйте.Пытаюсь загружать сохраненные данные при старте приложения и...

Вызов метода по таймеру
Здравствуйте, подскажите пожалуйста, почему при повторном нажатии таймер не...

Вызов метода из класса в таймере
Не могу получить титул веб страницы в таймере (ошибка). Пример: public...

Вызов java метода из native
Привет, чтот не пойму зачем у меня ошибка происходит... Значит что хочу и...

17
rouze
0 / 0 / 0
Регистрация: 02.03.2015
Сообщений: 7
11.03.2015, 20:44 2
Используй onStop(); или onDestroy();
А лучше изучи Activity LifeCycle (жизненный цикл Activity), там ответ на свой вопрос и найдешь.
0
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,583
Завершенные тесты: 1
11.03.2015, 20:46 3
onStop() ?
1
NEvOl
19 / 18 / 1
Регистрация: 13.08.2012
Сообщений: 734
11.03.2015, 20:49  [ТС] 4
onStop() я так понимаю у каждого активити есть, если мне нужно что бы вызвался 1 метод и неизвестно на каком активити будет остановлена работа, мне нужно у каждого класса активити перегружать onStop() вызовом этого метода ?
0
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,583
Завершенные тесты: 1
11.03.2015, 21:14 5
Лучший ответ Сообщение было отмечено NEvOl как решение

Решение

Я понимаю так - в тех активити, где надо что-то сохранять - делаем это в onStop().

Например избранное. Работа с ним ведь будет идти в какой-то одной активити, вот когда она будет закрываться и сохраняемся.

http://developer.android.com/trainin...ping.html#Stop
Although the onPause() method is called before onStop(), you should use onStop() to perform larger, more CPU intensive shut-down operations, such as writing information to a database.
1
Vladimirys
312 / 209 / 27
Регистрация: 16.01.2010
Сообщений: 610
11.03.2015, 23:46 6
Только не забываем что метод on Stop() может быть и не вызван. Так что сильно на него не надейтесь.
0
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,583
Завершенные тесты: 1
12.03.2015, 09:33 7
Цитата Сообщение от Vladimirys Посмотреть сообщение
Только не забываем что метод on Stop() может быть и не вызван.
а можно линк где это написано?

Не по теме:

я не считаю мой ответ лучшим в теме и попросил модераторов снять пометку еще вчера

0
FeonoR
11 / 0 / 0
Регистрация: 22.03.2012
Сообщений: 27
12.03.2015, 15:05 8
Цитата Сообщение от Паблито Посмотреть сообщение
а можно линк где это написано?
http://developer.android.com/trainin...cle/index.html
0
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,583
Завершенные тесты: 1
12.03.2015, 15:15 9
Цитата Сообщение от FeonoR Посмотреть сообщение
http://developer.android.com/trainin...cle/index.html
конкретнее
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.03.2015, 15:24 10
Насколько помню, там как раз написано, что все эти методы вызываются, но на деле, опять же насколько помню, onPause и onDestroy могут и не вызываться, а вот onStop вызывается всегда. Но могу и ошибаться.
0
FeonoR
11 / 0 / 0
Регистрация: 22.03.2012
Сообщений: 27
12.03.2015, 15:35 11
Паблито, вот точнее и даже по русски http://doc.artofweb.ru/doc/Основы_Android
Конкретно вот тут
Обратите внимание, после метода onPause() и onStop() система может просто завершить ваш процесс (process killed) и методы onStop() и onDestroy() не будут вызваны. Это вполне обычная ситуация, поэтому с самого начала разработки вашего приложения для Google Android (андроид) вы должны учитывать возможность возникновения такого события.
0
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,583
Завершенные тесты: 1
12.03.2015, 15:42 12
FeonoR,
1. ты мне дал ссылку на developer.android.com, причем ту же самую что я привел чуть выше днем раньше
2. только я вижу в приведенном тобой тексте логическое противоречие ?
Обратите внимание, после метода onPause() и onStop() система может просто завершить ваш процесс (process killed) и методы onStop() и onDestroy() не будут вызваны
я и не такой бред читаю каждый день
0
Vladimirys
312 / 209 / 27
Регистрация: 16.01.2010
Сообщений: 610
12.03.2015, 15:45 13
Цитата Сообщение от Паблито Посмотреть сообщение
а можно линк где это написано?
Линка нет, это из книги Android 4 для профессионалов (Сатия Коматинени, Дэйв Маклин) (ISBN 978-5-8459-1801-7)
страница 64, 2 - ой абзац, последнее предложение.
0
FeonoR
11 / 0 / 0
Регистрация: 22.03.2012
Сообщений: 27
12.03.2015, 15:57 14
Паблито, ок, не спорю криво текст написан, но выше текста есть блок схема, в которой наглядно показано, что приложение может умереть и после onPause и так же после onStop, ну не логично ли что в первом случае до стопа не дойдет?
0
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,583
Завершенные тесты: 1
12.03.2015, 15:59 15
Странно это все.
На всех англоязычных ресурсах пишут что начиная с API 14 метод onStop() гарантированно вызывается.
0
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
12.03.2015, 16:01 16
FeonoR прав, я напутал. onPause точно вызывается всегда, а onStop и onDestroy могут не успеть.
0
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,583
Завершенные тесты: 1
12.03.2015, 19:34 17
Нашел наконец http://developer.android.com/reference/android/app/Activity.html
Там прокручиваем до таблички в которой есть колонка Killable и читаем ниже пояснение:
Be aware that these semantics will change slightly between applications targeting platforms starting with HONEYCOMB vs. those targeting prior platforms. Starting with Honeycomb, an application is not in the killable state until its onStop() has returned. This impacts when onSaveInstanceState(Bundle) may be called (it may be safely called after onPause() and allows and application to safely wait until onStop() to save persistent state.
шах и мат
0
Vladimirys
312 / 209 / 27
Регистрация: 16.01.2010
Сообщений: 610
12.03.2015, 19:45 18
Да нет, все по прежнему - может быть не вызван Если версия ниже 11. А учитывая, что даже для версии 2.2. запилили, и сервисы плей, и библиотеку для бара - таких версий все еще не мало.
Так что все еще нужно учитывать. А уже о версии 2.3.3 и говорить нечего, еще в достатке.
0
12.03.2015, 19:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2015, 19:45

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

Вызов метода из другого Activity
Здраствуйте. Помогите,пожалуйста, разобраться с несколькими вопросами: 1)...

Вызов метода при прокрутке activity
Как обработать событие когда activity прокрутили в самый низ что бы вызвать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru