Google Android - это несложно • Просмотр темы - Урок 24. Activity Lifecycle, пример смены состояний с двумя Activity

Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 16 авг 2018, 15:01

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 75 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
СообщениеДобавлено: 30 ноя 2014, 01:02 

Зарегистрирован: 04 ноя 2014, 19:59
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
подскажите пожалуйста , выводит ошибку в main.xml на строчку android:text="@string/hello"> (не нашел ресурс, который соответствует данному имени), в чем ошибка?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 30 ноя 2014, 01:25 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 14:45
Сообщений: 2386
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 321 раз.
Значит у вас нет строки с именем hello

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 янв 2015, 08:05 

Зарегистрирован: 08 янв 2015, 14:32
Сообщений: 115
Благодарил (а): 6 раз.
Поблагодарили: 5 раз.
созрел глупый вопрос: хорошо, у нас есть несколько состояний активити... понятно, что на старте мы можем выполнить какой-то код... понятно что перед смертью активити можно что-то выполнить на прощание... вот сижу и пытаюсь придумать как можно использовать onDestroy() onStop() onPause() ??? зачем мне столько состояний? практическое применение покрыто мраком)))


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 янв 2015, 12:31 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
Конечно, если просто сидеть и думать, глядя в потолок - то мраком, да. А если взять и почитать урок, то парочка отпадет и останется одно.

_________________
R.id.team

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 янв 2015, 13:46 

Зарегистрирован: 08 янв 2015, 14:32
Сообщений: 115
Благодарил (а): 6 раз.
Поблагодарили: 5 раз.
Foenix писал(а):
...


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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 янв 2015, 15:19 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
Граф, вы меня тут воспитывать пытаетесь?
а загуглить, если в уроке не понятно?
http://stackoverflow.com/questions/8515 ... ethods-for

_________________
R.id.team

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 14 янв 2015, 09:55 

Зарегистрирован: 08 янв 2015, 14:32
Сообщений: 115
Благодарил (а): 6 раз.
Поблагодарили: 5 раз.
Foenix писал(а):
...


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

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

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

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 14 янв 2015, 10:37 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
http://www.youtube.com/watch?v=4-CRPx7z ... VvOFB7fkLa
и так далее
если уж и после этого не станет ясно..

_________________
R.id.team

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 12 мар 2015, 19:49 
Аватар пользователя

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

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

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 мар 2015, 20:31 
Аватар пользователя

Зарегистрирован: 31 янв 2015, 21:37
Сообщений: 26
Откуда: Беларусь
Благодарил (а): 4 раз.
Поблагодарили: 4 раз.
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 ;)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 авг 2015, 00:05 

Зарегистрирован: 17 ноя 2013, 01:54
Сообщений: 5
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.
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.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 апр 2016, 08:26 

Зарегистрирован: 17 янв 2016, 11:02
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Цитата:
Логи:

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

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



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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 авг 2016, 18:06 

Зарегистрирован: 13 авг 2016, 17:54
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Доброго времени суток, такой вопрос. Насколько сильно грузят систему много открытых активити, даже если они находятся в состоянии "OnPause()","OnStop()". Я к чему клоню, если написать приложение, которое будет тестировать по какой-либо среде. Главным активити будет запускать тесты, и потом каждое активити будет отвечать за каждый вопрос теста. На каждом "Тестовом активити" будет кнопка перехода не следующее активити и т.д. И так переходы до последнего активити для получения результата.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 фев 2018, 00:02 

Зарегистрирован: 04 фев 2018, 23:54
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Доброго дня. У меня возникает такая интересная штука. Есть 2 Activity, на второй выбираю кнопку, сохраняю результат через Intent и возвращаюсь в первой Activity.
Добавил логгирование, как в уроке. И я вижу, что при переходе ко второму Activity, первое не становится в состояние onStop(), а только в onPause, так же возвращаясь к нему из второго Activity происходит onResume().
Но мне бы хотелось обновить содержимое некоторых View


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 мар 2018, 14:04 

Зарегистрирован: 23 мар 2018, 13:25
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
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.
Возможно в этом дело.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 75 ]  На страницу Пред.  1, 2, 3, 4

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB