Урок 25. Task. Что это такое и как формируется

Обсуждение уроков
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 25. Task. Что это такое и как формируется

Сообщение damager82 » 17 окт 2011, 03:00

В этом уроке:
- немного теории по Task
- фиксируем Activity в состоянии Paused


Click here to read this article!
Последний раз редактировалось damager82 20 июн 2017, 15:07, всего редактировалось 9 раз.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

ermek6
Сообщения: 4
Зарегистрирован: 28 май 2012, 00:37

Re: Урок 25. Task. Что это такое и как формируется

Сообщение ermek6 » 28 май 2012, 01:23

Маленкий вопрос. А что произойдет в следующем случае.
Из MainActivity Вызываем Activity2 далее Activity3 а из нее MainActivity и кнопку "Назад" Activity 2 и 3 будут уничтожены? Ведь главное окно закрыто.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 25. Task. Что это такое и как формируется

Сообщение damager82 » 28 май 2012, 09:57

ermek6 писал(а):Маленкий вопрос. А что произойдет в следующем случае.
Из MainActivity Вызываем Activity2 далее Activity3 а из нее MainActivity и кнопку "Назад" Activity 2 и 3 будут уничтожены? Ведь главное окно закрыто.
Они будут накладываться друг на друга. Т.е. в одном таске будет несколько экземпляров MainActivity, Activity2 и Activity3. И если из очередного MainActivity нажать Назад, то откроется Activity3.

Чтобы избежать такого поведения, используются атрибуты Activity в манифесте и флаги в Intent. Но подробно я пока в этой теме не копался.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

brainail
Сообщения: 3
Зарегистрирован: 30 июл 2012, 00:11

Re: Урок 25. Task. Что это такое и как формируется

Сообщение brainail » 16 авг 2012, 00:32

Интересный глюк, я запускал это приложение на 2.2 андроид, так там когда жмём Back, ActivityTwo не убивается, а ведёт себя как и MainActivity, т.е. по сути происходил круговой стек. Может глюк, но запустил на 2.3 и теперь всё так же как и в уроке :)

Kitty
Сообщения: 6
Зарегистрирован: 30 авг 2012, 16:56

Re: Урок 25. Task. Что это такое и как формируется

Сообщение Kitty » 14 сен 2012, 12:02

Для этого открываем AndroidManifest.xm, вкладка Application, находим там ActivityTwo и справа в поле Theme пишем такой текст: @android:style/Theme.Dialog
Попыталась это сделать, но файл не сохраняется, ошибки:
Parser exception for .../AndroidManifest.xml: Content is not allowed in prolog.
Error in an XML file: aborting build.

Kitty
Сообщения: 6
Зарегистрирован: 30 авг 2012, 16:56

Re: Урок 25. Task. Что это такое и как формируется

Сообщение Kitty » 14 сен 2012, 12:13

Нашла! Неправильно прописалось почему-то в самом .xml. Подправила :)

ValeriusSR
Сообщения: 9
Зарегистрирован: 14 дек 2012, 09:14

Re: Урок 25. Task. Что это такое и как формируется

Сообщение ValeriusSR » 11 янв 2013, 15:04

Здравствуйте.

Вот такая штука:
Из activity1 я создаю activity2 и получаю на стеке 2 активности

Код: Выделить всё

activity1
activity2
Если теперь нажать на кнопку back, то activity2 убъется, и проявится activity1 со стека
все отлично.

Но вот как эмулировать такое поведение программно?
Если я пишу в кнопке activity2

Код: Выделить всё

startActivity(new Intent(this, Activity1.class));
finish();
подразумевай "вернуться к activity1"
то на стеке остается прошлая активность activity1, а поверх накладывается новый экземпляр activity1

Код: Выделить всё

activity1 (old)
activity1 (newly created)
Другими словами, как поработать со стеком активностей программно?

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 25. Task. Что это такое и как формируется

Сообщение KamiSempai » 11 янв 2013, 17:04

Если вам нужно вернуться к предыдущей Activity просто вызываете finish(). Вызов метода startActivity тут лишний.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

ValeriusSR
Сообщения: 9
Зарегистрирован: 14 дек 2012, 09:14

Re: Урок 25. Task. Что это такое и как формируется

Сообщение ValeriusSR » 11 янв 2013, 19:14

KamiSempai писал(а):Если вам нужно вернуться к предыдущей Activity просто вызываете finish(). Вызов метода startActivity тут лишний.
и верно. Спасибо.

vladi
Сообщения: 1
Зарегистрирован: 10 сен 2013, 10:17

Re: Урок 25. Task. Что это такое и как формируется

Сообщение vladi » 10 сен 2013, 10:22

Здрасти. :)
Для начала спасибо за уроки. Просто, понятно, доступно.
У меня вот вопрос возник. Где-то (вроде как на Хабре) читал, что в случае скрытия Activity с экрана (Читай onPause, onStop) android-овский сборщик мусора вполне может и уничтожить Activity. А о восстановлении состояния доллжен заботиться сам програмист. Так ли это?

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 25. Task. Что это такое и как формируется

Сообщение KamiSempai » 10 сен 2013, 11:43

vladi писал(а):У меня вот вопрос возник. Где-то (вроде как на Хабре) читал, что в случае скрытия Activity с экрана (Читай onPause, onStop) android-овский сборщик мусора вполне может и уничтожить Activity. А о восстановлении состояния доллжен заботиться сам програмист. Так ли это?
Да, так. О том как это делать написано в 70 уроке.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

Re: Урок 25. Task. Что это такое и как формируется

Сообщение Isaev » 14 окт 2013, 12:06

Код: Выделить всё

Нажмем Back.

Логи:

ActivityTwo: onPause()
MainActivity: onResume()
ActivityTwo: onStop()
ActivityTwo: onDestroy()
У меня в этом моменте ActivityTwo не убивается, а только теряет фокус и переходит в состояние Paused, т.е. последние 2 события не происходят... зато при выходе иничтожается сначала MainActivity потом ActivityTwo :)
соберал под 2.2, выше вроде писали такой же "баг"!? (или там логика менялась?)

niixon
Сообщения: 24
Зарегистрирован: 13 окт 2013, 10:11

Re: Урок 25. Task. Что это такое и как формируется

Сообщение niixon » 12 ноя 2013, 13:24

Если вам надо открыть что-то новое, вы создаете новую вкладку и теперь уже в ней открываете страницы, переходите по ссылкам, возвращаетсь назад.

возвращаетЕсь - ошибка)

mrHelg
Сообщения: 2
Зарегистрирован: 09 янв 2014, 03:09

Re: Урок 25. Task. Что это такое и как формируется

Сообщение mrHelg » 12 янв 2014, 18:45

Здравствуйте. Помогите разобраться.
У меня при вызове 2го активити как диалогового окна (задаю это программно, в методе onCreate, перед вызовом super.Oncreate()) 1е активити уходит в "Stopped" состояние и диалоговое окно появляется на фоне черного экрана. Как сделать, чтобы 1е активити осталось в состоянии "Paused" и диалоговое окно (2е активити) появилось на его фоне? Спасибо.

Nemoi
Сообщения: 3
Зарегистрирован: 16 фев 2014, 15:00

Re: Урок 25. Task. Что это такое и как формируется

Сообщение Nemoi » 16 фев 2014, 15:02

Добрый день!
возникла проблема , создано 3 активити , после запуска в эмуляторе приложение отображает первое активити , для перехода на второе нажимаю кнопку и мне выдает такой лог ошибок , подскажите в чем проблема ? при двух активити приложение запускалось и переходило по нажатию в следующее - при трех не хочет ни в какую.

02-16 06:55:29.954: D/State(1237): MainActivity: onCreate()
02-16 06:55:29.954: D/State(1237): MainActivity:OnStart
02-16 06:55:29.964: D/State(1237): MainActivity: Resume
02-16 06:55:30.144: D/gralloc_goldfish(1237): Emulator without GPU emulation detected.
02-16 06:55:54.664: D/State(1237): ActivityMain: onPause()
02-16 06:55:54.734: I/Choreographer(1237): Skipped 43 frames! The application may be doing too much work on its main thread.
02-16 06:55:55.084: D/State(1237): ActivityTwo: onCreate()
02-16 06:55:55.114: D/AndroidRuntime(1237): Shutting down VM
02-16 06:55:55.114: W/dalvikvm(1237): threadid=1: thread exiting with uncaught exception (group=0xb4adeba8)
02-16 06:55:55.154: E/AndroidRuntime(1237): FATAL EXCEPTION: main
02-16 06:55:55.154: E/AndroidRuntime(1237): Process: com.example.practic, PID: 1237
02-16 06:55:55.154: E/AndroidRuntime(1237): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.practic/com.example.practic.ActivityTwo}: java.lang.NullPointerException
02-16 06:55:55.154: E/AndroidRuntime(1237): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
02-16 06:55:55.154: E/AndroidRuntime(1237): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
02-16 06:55:55.154: E/AndroidRuntime(1237): at android.app.ActivityThread.access$800(ActivityThread.java:135)
02-16 06:55:55.154: E/AndroidRuntime(1237): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
02-16 06:55:55.154: E/AndroidRuntime(1237): at android.os.Handler.dispatchMessage(Handler.java:102)
02-16 06:55:55.154: E/AndroidRuntime(1237): at android.os.Looper.loop(Looper.java:136)
02-16 06:55:55.154: E/AndroidRuntime(1237): at android.app.ActivityThread.main(ActivityThread.java:5017)
02-16 06:55:55.154: E/AndroidRuntime(1237): at java.lang.reflect.Method.invokeNative(Native Method)
02-16 06:55:55.154: E/AndroidRuntime(1237): at java.lang.reflect.Method.invoke(Method.java:515)
02-16 06:55:55.154: E/AndroidRuntime(1237): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
02-16 06:55:55.154: E/AndroidRuntime(1237): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-16 06:55:55.154: E/AndroidRuntime(1237): at dalvik.system.NativeStart.main(Native Method)
02-16 06:55:55.154: E/AndroidRuntime(1237): Caused by: java.lang.NullPointerException
02-16 06:55:55.154: E/AndroidRuntime(1237): at com.example.practic.ActivityTwo.onCreate(ActivityTwo.java:23)
02-16 06:55:55.154: E/AndroidRuntime(1237): at android.app.Activity.performCreate(Activity.java:5231)
02-16 06:55:55.154: E/AndroidRuntime(1237): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-16 06:55:55.154: E/AndroidRuntime(1237): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
02-16 06:55:55.154: E/AndroidRuntime(1237): ... 11 more
02-16 06:55:57.314: I/Process(1237): Sending signal. PID: 1237 SIG: 9

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

Re: Урок 25. Task. Что это такое и как формируется

Сообщение Foenix » 16 фев 2014, 15:18

at com.example.practic.ActivityTwo.onCreate(ActivityTwo.java:23)

сюда жми, ошибка там.
R.id.team

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

Nemoi
Сообщения: 3
Зарегистрирован: 16 фев 2014, 15:00

Re: Урок 25. Task. Что это такое и как формируется

Сообщение Nemoi » 16 фев 2014, 16:55

Foenix писал(а):at com.example.practic.ActivityTwo.onCreate(ActivityTwo.java:23)

сюда жми, ошибка там.
не знал что в от логов можно прям к строке ошибки перейти ) поправил ! огромное спасибо !

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

Re: Урок 25. Task. Что это такое и как формируется

Сообщение Foenix » 16 фев 2014, 21:38

на эту тему создавался вебинар. Ищите ссылку в соотв. разделе форума.
R.id.team

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

mast67
Сообщения: 1
Зарегистрирован: 19 мар 2014, 23:02

Re: Урок 25. Task. Что это такое и как формируется

Сообщение mast67 » 19 мар 2014, 23:04

Добрый вечер. В уроке написано, что если мы в приложении из активити А переходим в активити Б, затем сворачиваем приложение, и кликаем по иконке приложения, то попадаем на стартовую активити А. Есть ли какая та настройка, при котороый мы бы вернулись в активити Б при клике на иконке приложения?

lekseyich
Сообщения: 4
Зарегистрирован: 23 июл 2014, 14:49

Re: Урок 25. Task. Что это такое и как формируется

Сообщение lekseyich » 23 июл 2014, 14:57

Добрый день.
Проблема такая, при попытке добавить стиль для второго активити в ручную (поскольку использую андроид студио), во время вызова второго активи приложение вылетает с ошибкой, ругаясь на строку "super.onCreate(savedInstanceState);" в классе второго активити.

Код: Выделить всё

        <activity
            android:name="ru.devleksey.forteach.app.activity_two"
            android:label="@string/title_activity_activity_two"
            android:theme="@android:style/Theme.Dialog">
        </activity>
Как можно решить данную проблему. И неплохо было бы дать информацию о ручной правке манифеста, поскольку визуальный редактор как я понимаю есть только в еклипсе.

Ответить