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

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

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

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

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

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

Выполнение перед завершением
Как выполнить код перед завершением программы, например, если в int main() передали return 0; , то...

Как добавить паузу перед завершением программы?
#include "stdafx.h" #include <stdio.h> /* печать таблицы температур по Фаренгейту и Цельсию для...

17
rouze
0 / 0 / 0
Регистрация: 02.03.2015
Сообщений: 7
11.03.2015, 20:44 2
Используй onStop(); или onDestroy();
А лучше изучи Activity LifeCycle (жизненный цикл Activity), там ответ на свой вопрос и найдешь.
0
Pablito
2867 / 2280 / 768
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 1
11.03.2015, 20:46 3
onStop() ?
1
NEvOl
19 / 18 / 1
Регистрация: 13.08.2012
Сообщений: 744
11.03.2015, 20:49  [ТС] 4
onStop() я так понимаю у каждого активити есть, если мне нужно что бы вызвался 1 метод и неизвестно на каком активити будет остановлена работа, мне нужно у каждого класса активити перегружать onStop() вызовом этого метода ?
0
Pablito
2867 / 2280 / 768
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 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
320 / 215 / 29
Регистрация: 16.01.2010
Сообщений: 632
11.03.2015, 23:46 6
Только не забываем что метод on Stop() может быть и не вызван. Так что сильно на него не надейтесь.
0
Pablito
2867 / 2280 / 768
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 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
2867 / 2280 / 768
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 1
12.03.2015, 15:15 9
Цитата Сообщение от FeonoR Посмотреть сообщение
http://developer.android.com/trainin...cle/index.html
конкретнее
0
Spelcrawler
534 / 503 / 114
Регистрация: 12.03.2014
Сообщений: 1,670
Завершенные тесты: 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
2867 / 2280 / 768
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 1
12.03.2015, 15:42 12
FeonoR,
1. ты мне дал ссылку на developer.android.com, причем ту же самую что я привел чуть выше днем раньше
2. только я вижу в приведенном тобой тексте логическое противоречие ?
Обратите внимание, после метода onPause() и onStop() система может просто завершить ваш процесс (process killed) и методы onStop() и onDestroy() не будут вызваны
я и не такой бред читаю каждый день
0
Vladimirys
320 / 215 / 29
Регистрация: 16.01.2010
Сообщений: 632
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
2867 / 2280 / 768
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 1
12.03.2015, 15:59 15
Странно это все.
На всех англоязычных ресурсах пишут что начиная с API 14 метод onStop() гарантированно вызывается.
0
Spelcrawler
534 / 503 / 114
Регистрация: 12.03.2014
Сообщений: 1,670
Завершенные тесты: 1
12.03.2015, 16:01 16
FeonoR прав, я напутал. onPause точно вызывается всегда, а onStop и onDestroy могут не успеть.
0
Pablito
2867 / 2280 / 768
Регистрация: 12.05.2014
Сообщений: 7,978
Завершенные тесты: 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
320 / 215 / 29
Регистрация: 16.01.2010
Сообщений: 632
12.03.2015, 19:45 18
Да нет, все по прежнему - может быть не вызван Если версия ниже 11. А учитывая, что даже для версии 2.2. запилили, и сервисы плей, и библиотеку для бара - таких версий все еще не мало.
Так что все еще нужно учитывать. А уже о версии 2.3.3 и говорить нечего, еще в достатке.
0
12.03.2015, 19:45
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2015, 19:45

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

Thread group извлечь себя самого перед завершением
проблема в том, что потоки создаются в группе вот так...boost::thread_group my_threads; void...

Как можно организовать вызов метода WCF из Android приложения?
Привет народ. Как можно организовать вызова метода WCF из Android приложение? Нашел пример на...

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что...

Завершение внешнего процесса вместе с завершением работы формы
Доброго времени суток дорогие друзья! У меня возник вопрос. Как сделать так чтобы по закрытию...


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

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

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