Страница 1 из 2

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

Добавлено: 17 окт 2011, 03:00
damager82
В этом уроке:
- немного теории по Task
- фиксируем Activity в состоянии Paused


Click here to read this article!

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

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

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

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

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

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

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

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

Добавлено: 14 сен 2012, 12:02
Kitty
Для этого открываем 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.

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

Добавлено: 14 сен 2012, 12:13
Kitty
Нашла! Неправильно прописалось почему-то в самом .xml. Подправила :)

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

Добавлено: 11 янв 2013, 15:04
ValeriusSR
Здравствуйте.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 14 окт 2013, 12:06
Isaev

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

Нажмем Back.

Логи:

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

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

Добавлено: 12 ноя 2013, 13:24
niixon
Если вам надо открыть что-то новое, вы создаете новую вкладку и теперь уже в ней открываете страницы, переходите по ссылкам, возвращаетсь назад.

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

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

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

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

Добавлено: 16 фев 2014, 15:02
Nemoi
Добрый день!
возникла проблема , создано 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

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

Добавлено: 16 фев 2014, 15:18
Foenix
at com.example.practic.ActivityTwo.onCreate(ActivityTwo.java:23)

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

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

Добавлено: 16 фев 2014, 16:55
Nemoi
Foenix писал(а):at com.example.practic.ActivityTwo.onCreate(ActivityTwo.java:23)

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

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

Добавлено: 16 фев 2014, 21:38
Foenix
на эту тему создавался вебинар. Ищите ссылку в соотв. разделе форума.

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

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

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

Добавлено: 23 июл 2014, 14:57
lekseyich
Добрый день.
Проблема такая, при попытке добавить стиль для второго активити в ручную (поскольку использую андроид студио), во время вызова второго активи приложение вылетает с ошибкой, ругаясь на строку "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>
Как можно решить данную проблему. И неплохо было бы дать информацию о ручной правке манифеста, поскольку визуальный редактор как я понимаю есть только в еклипсе.