Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
20 / 19 / 1
Регистрация: 13.08.2012
Сообщений: 779
1

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

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

Author24 — интернет-сервис помощи студентам
Вопрос такой, есть ли какой-нибудь метод, который можно перегрузить и который будет вызываться перед закрытием программы ? (например для сохранения информации о состоянии приложения в файл и т.п.)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2015, 20:36
Ответы с готовыми решениями:

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

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

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

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

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

Решение

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

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

http://developer.android.com/t... .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
349 / 240 / 34
Регистрация: 16.01.2010
Сообщений: 766
11.03.2015, 23:46 6
Только не забываем что метод on Stop() может быть и не вызван. Так что сильно на него не надейтесь.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
12.03.2015, 09:33 7
Цитата Сообщение от Vladimirys Посмотреть сообщение
Только не забываем что метод on Stop() может быть и не вызван.
а можно линк где это написано?

Не по теме:

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

0
11 / 0 / 0
Регистрация: 22.03.2012
Сообщений: 27
12.03.2015, 15:05 8
Цитата Сообщение от Паблито Посмотреть сообщение
а можно линк где это написано?
http://developer.android.com/t... index.html
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
12.03.2015, 15:15 9
Цитата Сообщение от FeonoR Посмотреть сообщение
http://developer.android.com/trainin...cle/index.html
конкретнее
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
12.03.2015, 15:24 10
Насколько помню, там как раз написано, что все эти методы вызываются, но на деле, опять же насколько помню, onPause и onDestroy могут и не вызываться, а вот onStop вызывается всегда. Но могу и ошибаться.
0
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
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
12.03.2015, 15:42 12
FeonoR,
1. ты мне дал ссылку на developer.android.com, причем ту же самую что я привел чуть выше днем раньше
2. только я вижу в приведенном тобой тексте логическое противоречие ?
Обратите внимание, после метода onPause() и onStop() система может просто завершить ваш процесс (process killed) и методы onStop() и onDestroy() не будут вызваны
я и не такой бред читаю каждый день
0
349 / 240 / 34
Регистрация: 16.01.2010
Сообщений: 766
12.03.2015, 15:45 13
Цитата Сообщение от Паблито Посмотреть сообщение
а можно линк где это написано?
Линка нет, это из книги Android 4 для профессионалов (Сатия Коматинени, Дэйв Маклин) (ISBN 978-5-8459-1801-7)
страница 64, 2 - ой абзац, последнее предложение.
0
11 / 0 / 0
Регистрация: 22.03.2012
Сообщений: 27
12.03.2015, 15:57 14
Паблито, ок, не спорю криво текст написан, но выше текста есть блок схема, в которой наглядно показано, что приложение может умереть и после onPause и так же после onStop, ну не логично ли что в первом случае до стопа не дойдет?
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
12.03.2015, 15:59 15
Странно это все.
На всех англоязычных ресурсах пишут что начиная с API 14 метод onStop() гарантированно вызывается.
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
12.03.2015, 16:01 16
FeonoR прав, я напутал. onPause точно вызывается всегда, а onStop и onDestroy могут не успеть.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
12.03.2015, 19:34 17
Нашел наконец http://developer.android.com/r... ivity.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
349 / 240 / 34
Регистрация: 16.01.2010
Сообщений: 766
12.03.2015, 19:45 18
Да нет, все по прежнему - может быть не вызван Если версия ниже 11. А учитывая, что даже для версии 2.2. запилили, и сервисы плей, и библиотеку для бара - таких версий все еще не мало.
Так что все еще нужно учитывать. А уже о версии 2.3.3 и говорить нечего, еще в достатке.
0
12.03.2015, 19:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2015, 19:45
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru