Урок 24. Activity Lifecycle, пример смены состояний с двумя Activity

Обсуждение уроков
superrash
Сообщения: 2
Зарегистрирован: 04 ноя 2014, 19:59

Re: Урок 24. Activity Lifecycle, пример смены состояний с дв

Сообщение superrash » 30 ноя 2014, 01:02

подскажите пожалуйста , выводит ошибку в main.xml на строчку android:text="@string/hello"> (не нашел ресурс, который соответствует данному имени), в чем ошибка?


GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: Урок 24. Activity Lifecycle, пример смены состояний с дв

Сообщение GRAF_COLLIOSTRO » 13 янв 2015, 08:05

созрел глупый вопрос: хорошо, у нас есть несколько состояний активити... понятно, что на старте мы можем выполнить какой-то код... понятно что перед смертью активити можно что-то выполнить на прощание... вот сижу и пытаюсь придумать как можно использовать onDestroy() onStop() onPause() ??? зачем мне столько состояний? практическое применение покрыто мраком)))

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 24. Activity Lifecycle, пример смены состояний с дв

Сообщение Foenix » 13 янв 2015, 12:31

Конечно, если просто сидеть и думать, глядя в потолок - то мраком, да. А если взять и почитать урок, то парочка отпадет и останется одно.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: Урок 24. Activity Lifecycle, пример смены состояний с дв

Сообщение GRAF_COLLIOSTRO » 13 янв 2015, 13:46

Foenix писал(а):...
не понимаю зачем "писать эмоции" ???
по факту полезной информации в вашем высказывании нет.
Зато успешно потролили нубика вроде меня. Зачёт(
И откуда у Вас информация, что я гляжу в потолок?
вот перечитываю ваше многобуквие - там нет ответа на мой вопрос(
я не в первый раз с Вами пересекаюсь уже в топиках. полезной информации минимум. сплошной экшен на грани флуда и флейма. Зачем??? Ваша рекомендация мне "взять и почитать урок" не помогла, к сожалению. Точнее именно в этом уроке ответа я не нашёл. Копаю дальше...

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 24. Activity Lifecycle, пример смены состояний с дв

Сообщение Foenix » 13 янв 2015, 15:19

Граф, вы меня тут воспитывать пытаетесь?
а загуглить, если в уроке не понятно?
http://stackoverflow.com/questions/8515 ... ethods-for
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

GRAF_COLLIOSTRO
Сообщения: 115
Зарегистрирован: 08 янв 2015, 14:32

Re: Урок 24. Activity Lifecycle, пример смены состояний с дв

Сообщение GRAF_COLLIOSTRO » 14 янв 2015, 09:55

Foenix писал(а):...
я пытаюсь разобраться с Андройдом. остальное интересует меньше всего.
возникают вопросы - пишу сюда. иначе зачем нужен этот форум?
Гугл конечно рулит, но тут ресурс тематический и русскоязычный... - как бы получается использую по назначению)

Что касательно лично Вас, - это Вы решили что я Вас пытаюсь воспитывать.
обычная ситуация: один задал вопрос. другой прочитал - захотел ответил. - не захотел пропустил. ничего больше ведь не требуется.
Наша с Вами ситуация: один нуб задал вопрос. ждёт, может кто напишет ему нубу... в ответ же он получает "КАШМАР!!! какой ленивый и глупый НУБ!" - утрирую.
- автоматом возникает вопрос: "зачем писать это? - лучше бы по теме пару слов вместо этого раз уж нашлось время на написание сообщения мне...".

повторюсь мне нет дела до Вас лично, я здесь исключительно по теме АНДРОЙДА... предлагаю забыть все лишние буквы и эмоции...

За ссылку спасибо! двигаемся дальше... хотя по факту чем дальше в дебри, тем больше вопросов)))

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 24. Activity Lifecycle, пример смены состояний с дв

Сообщение Foenix » 14 янв 2015, 10:37

http://www.youtube.com/watch?v=4-CRPx7z ... VvOFB7fkLa
и так далее
если уж и после этого не станет ясно..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Mr.KotoFei
Сообщения: 2
Зарегистрирован: 11 ноя 2014, 13:12
Откуда: Новосибирск

Re: Урок 24. Activity Lifecycle, пример смены состояний с дв

Сообщение Mr.KotoFei » 12 мар 2015, 19:49

Я случайно в onClick указал переход из MainActivity в MainActivity(сам га себя), создаётся второй такой же активити?
И вот ещё, ( я создал 2 активити и взаимный переход между ними) несколько раз переходу из одного активити (1)во второй активити(2), после возвращаюсь вактивити(1) и и нажимая (телефонную кнопку назад со стрелочкой, не знаю как называется)) он не выходит из приложения ,а возвращается в активити2, эму ещё раз "назад" и возвращается на (1), и так столько раз, сколько япрперехожил из одного активити в другой. Это значит, что акьивити(2) не уничтожается, а остаётся в памяти?
Извините, по определенным причинам не могу просмотреть логи :( и за то, что корявл написал тоже, т.к пишу с телефона ))

Я кажется разобрался.. Получается я переходу из активити1 в активити2(создается второе активити, а первое в памяти) после, перехожу из активити2 в активити1( создаётся ещё одно активити1, а 1,и 2 остаётся в памяти, и получилось, что я открыл сразу две одинаковых активити). . таким образом, если уже существует кнопка "назад" на телефоне, то взаимный переход между двумя активити вовсе не нужен. Это из личного, только что приобретенного опыта)) если что-то не так, поправьте)

А как сделать, чтобы активити уничтожался при нажатии button, а не телефонной кнопки назад. Просто прописать кнопке onclick "finish"? И получится, мы нажали ту же кнопку " назад "?

Аватара пользователя
NovikPY
Сообщения: 26
Зарегистрирован: 31 янв 2015, 21:37
Откуда: Беларусь

Re: Урок 24. Activity Lifecycle, пример смены состояний с дв

Сообщение NovikPY » 17 мар 2015, 20:31

superrash писал(а):подскажите пожалуйста , выводит ошибку в main.xml на строчку android:text="@string/hello"> (не нашел ресурс, который соответствует данному имени), в чем ошибка?
В видеоуроке этот момент описывается на 0:42 промежутке времени:
"...данная ошибка связана с обновлением версии, изменилось имя по умолчанию строковой константы в файле Strings.xml в папке "values", скопируйте правильное имя константы из данного файла...."
Т.е. откройте Strings.xml, найдите там следующий код:

<string name="hello_world">Hello world!</string>

скопируйте hello_world и вставьте вместо Вашего @string/hello ;)

FLancer
Сообщения: 5
Зарегистрирован: 17 ноя 2013, 01:54

Re: Урок 24. Activity Lifecycle, пример смены состояний с дв

Сообщение FLancer » 09 авг 2015, 00:05

GRAF_COLLIOSTRO писал(а):созрел глупый вопрос: хорошо, у нас есть несколько состояний активити... понятно, что на старте мы можем выполнить какой-то код... понятно что перед смертью активити можно что-то выполнить на прощание... вот сижу и пытаюсь придумать как можно использовать onDestroy() onStop() onPause() ??? зачем мне столько состояний? практическое применение покрыто мраком)))
Из Рето Майер. Android 4. Программирование приложений для планшетных компьютеров и смартфонов. Стр 117-119
Подробнее о состояниях Активности

Пребывая в «полноценном» состоянии, между созданием и уничтожением, объект Activity может несколько раз становиться активным и видимым. Каждый такой переход сопровождается вызовом ранее описанных обработчиков. В этом разделе более подробно рассматривается каждое из состояний, а также характерные для них события.

Полноценное состояние

Активность пребывает в полноценном состоянии между первым вызовом метода onCreate и последним вызовом метода onDestroy. Нередко работа Активности может быть прервана без вызова onDestroy.

Используйте обработчик onCreate, чтобы инициализировать Активность, загружайте пользовательский интерфейс, получайте ссылки на Фрагменты, размещайте ссылки на свойства класса, связывайте данные с элементами управления, запускайте Сервисы и таймеры. Если Активность неожиданно закрывается системой, метод onCreate принимает объект Bundle, содержащий состояние пользовательского интерфейса, сохраненное в последнем вызове обработчика onSavelnstanceState. Для восстановления графического интерфейса в его предыдущем состоянии нужно задействовать эту переменную: внутри методов onCreate или onRestorelnstanceState.

Обратитесь к переопределенному обработчику onDestroy, чтобы очищать любые ресурсы, созданные в методе onCreate, и закрывать подключения к таким внешним источникам, как сеть или базы данных.

В официальном руководстве по написанию эффективного кода для Android рекомендуется избегать создания объектов с коротким жизненным циклом. Быстрое появление и уничтожение объектов провоцирует дополнительное срабатывание сборщика мусора (garbage collector, или GC), что может оставить неприятное впечатление у пользователя от работы приложения. Если ваша Активность регулярно выделяет память для одного и того же набора объектов, подумайте, можно ли переместить их создание в метод onCreate, который вызывается всего один раз за все время жизни объекта Activity.

Видимое состояние

Активность считается видимой между вызовами методов onStart и onStop. В таком состоянии она видна пользователю, но при этом может быть и частично перекрытой и не реагировать на ввод. Переходя из фонового режима на передний план и обратно, Активности могут несколько раз менять свое «видное» состояние, находясь при этом в полноценной фазе жизненного цикла. Хотя обычно это не происходит, но в крайних случаях Android может прервать работу видимой Активности без вызова метода onStop.

Обработчик onStop используется для приостановки анимации, потоков, отслеживания показаний датчиков, запросов к GPS, таймеров, Сервисов или других процессов, которые нужны исключительно для обновления пользовательского интерфейса. Нет смысла потреблять ресурсы (такты центрального процессора или сетевой трафик) для обновления интерфейса, в то время как он не виден на экране. Примените методы onStart или onRestart для возобновления или повторного запуска этих процессов, когда Активность опять станет видимой.

onRestart предшествует вызовам метода onStart (кроме самого первого). Используйте его для специальных действий, которые должны выполняться только при повторном запуске Активности в рамках «полноценного» состояния.

Методы onStart/onStop также нужны для регистрации (и ее отмены) Широковещательных приемников, которые задействуются исключительно для обновления графического интерфейса. Больше о Широковещательных приемниках вы узнаете в главе 5.

Активное состояние

Оно начинается с момента вызова метода onResume и заканчивается при вызове onPause. В этом состоянии Активность находится на переднем плане и может принимать пользовательский ввод. Прежде чем быть уничтоженным, объект Activity способен несколько раз входить в активное состояние и выходить из него, например при потере фокуса, отображении новой Активности или когда устройство входит в режим ожидания. Пытайтесь размещать в методах onPause и onResume относительно быстрый и легковесный код, чтобы ваше приложение оставалось отзывчивым при скрытии с экрана или выходе на передний план.

Прямо перед onPause вызывается обработчик onSavelnstanceState. Он предоставляет возможность сохранять состояние пользовательского интерфейса Активности в объект Bundle, который потом будет передаваться в методы onCreate и onRestorelnstanceState. Используйте обработчик onSavelnstanceState для сохранения состояния интерфейса (например, состояния флажков, текущего выделенного элемента или введенных, но несохраненных данных), чтобы объект Activity при следующем входе в активное состояние мог вывести на экран тот же интерфейс. Рассчитывайте, что перед завершением работы процесса во время активного состояния будут вызваны обработчики onSavelnstanceState и onPause.

В большинстве реализаций класса Activity переопределяется как минимум метод onPause. Внутри него фиксируются несохраненные изменения, потому как после его выполнения работа Активности может прерваться без предупреждения. Исходя из архитектуры своего приложения, вы также можете приостановить выполнение потоков, процессов или Широковещательных приемников, пока Активность не появится на переднем плане.

Метод onResume может быть довольно легковесным. Вам не нужно перезагружать состояние пользовательского интерфейса внутри него, так как эти функции возложены на обработчики onCreate и onRestorelnstanceState. Используйте метод onResume для регистрации любых Широковещательных приемников или других процессов, которые должны приостанавливаться внутри обработчика onPause.

mr.Rich
Сообщения: 5
Зарегистрирован: 17 янв 2016, 11:02

Re: Урок 24. Activity Lifecycle, пример смены состояний с дв

Сообщение mr.Rich » 10 апр 2016, 08:26

Логи:

MainActivity: onCreate()
MainActivity: onStart()
MainActivity: onResume()

Все, как и в прошлый раз - вызываются три метода. Activity проходит через состояния Stopped, Paused и остается в состоянии Resumed.

разве не через состояния onCreate() и onStart() и остается в состоянии onResume() ?

Serega_Alfach
Сообщения: 5
Зарегистрирован: 13 авг 2016, 17:54

Re: Урок 24. Activity Lifecycle, пример смены состояний с дв

Сообщение Serega_Alfach » 13 авг 2016, 18:06

Доброго времени суток, такой вопрос. Насколько сильно грузят систему много открытых активити, даже если они находятся в состоянии "OnPause()","OnStop()". Я к чему клоню, если написать приложение, которое будет тестировать по какой-либо среде. Главным активити будет запускать тесты, и потом каждое активити будет отвечать за каждый вопрос теста. На каждом "Тестовом активити" будет кнопка перехода не следующее активити и т.д. И так переходы до последнего активити для получения результата.

ilyako
Сообщения: 1
Зарегистрирован: 04 фев 2018, 23:54

Re: Урок 24. Activity Lifecycle, пример смены состояний с дв

Сообщение ilyako » 05 фев 2018, 00:02

Доброго дня. У меня возникает такая интересная штука. Есть 2 Activity, на второй выбираю кнопку, сохраняю результат через Intent и возвращаюсь в первой Activity.
Добавил логгирование, как в уроке. И я вижу, что при переходе ко второму Activity, первое не становится в состояние onStop(), а только в onPause, так же возвращаясь к нему из второго Activity происходит onResume().
Но мне бы хотелось обновить содержимое некоторых View

alex_bam
Сообщения: 1
Зарегистрирован: 23 мар 2018, 13:25

Re: Урок 24. Activity Lifecycle, пример смены состояний с дв

Сообщение alex_bam » 23 мар 2018, 14:04

NovikPY писал(а):
superrash писал(а):подскажите пожалуйста , выводит ошибку в main.xml на строчку android:text="@string/hello"> (не нашел ресурс, который соответствует данному имени), в чем ошибка?
В видеоуроке этот момент описывается на 0:42 промежутке времени:
"...данная ошибка связана с обновлением версии, изменилось имя по умолчанию строковой константы в файле Strings.xml в папке "values", скопируйте правильное имя константы из данного файла...."
Т.е. откройте Strings.xml, найдите там следующий код:

<string name="hello_world">Hello world!</string>

скопируйте hello_world и вставьте вместо Вашего @string/hello ;)
Добрый день!
Эту ошибку подправил. Приложение компилируется и работает, но есть такой момент.
В строке android:text="@string/hello_world"> подчеркнуто красным "hello_world" и при наведении мыши пишет, что ожидается класс или интерфейс.
Я использую Android studio 3.0.1.
Возможно в этом дело.

Ответить