Урок 116. Поведение Activity в Task. Intent-флаги, launchMode, affinity

Обсуждение уроков
Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 116. Поведение Activity в Task. Intent-флаги, launc

Сообщение n0tb0dy » 15 апр 2014, 14:58

altwin писал(а):[syntax=java5]try
{
List<ActivityManager.RunningAppProcessInfo> tasks = am.getRunningAppProcesses();
int numOfTasks = tasks.size();
for(int i = 0; i < numOfTasks; i++)
{
ActivityManager.RunningAppProcessInfo task = tasks.get(i);
try
{
PackageInfo myPInfo = getPackageManager().getPackageInfo(task.processName, 0);
//Log::task.processName
}
catch (PackageManager.NameNotFoundException ne)
{
ne.printStackTrace();
}
}
}
catch (SecurityException se)
{
se.printStackTrace();
}[/syntax]
и кстати вот по этой строке

List<ActivityManager.RunningAppProcessInfo> tasks = am.getRunningAppProcesses();

вылетает все время ошибка

java.lang.NullPointerExeption

как это можно пофиксить?

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 116. Поведение Activity в Task. Intent-флаги, launc

Сообщение n0tb0dy » 15 апр 2014, 16:58

n0tb0dy писал(а):и еще может кто подскажет как зная TaskID получить имя корневой активности для данной задачи, а так же количество активностей в ней?
усе уже сам решил :)

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 116. Поведение Activity в Task. Intent-флаги, launc

Сообщение n0tb0dy » 17 апр 2014, 15:21

n0tb0dy писал(а):и еще может кто подскажет как зная TaskID получить имя корневой активности для данной задачи, а так же количество активностей в ней?
и это уже сам узнал :)

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 116. Поведение Activity в Task. Intent-флаги, launc

Сообщение n0tb0dy » 17 апр 2014, 15:22

таки узнал и то что такое TID в LogCat - это ThreadID

а не TaskID, как я думал

подтверждение сему можно проверить этим кодом:

Log.d(TAG, "Thread ID: "+ android.os.Process.myTid());

а чтобы получить то что выводится в колонке PID такой код:

Log.d(TAG, "Process ID: "+ android.os.Process.myPid());


чтение Stack Overflow просветляет
Последний раз редактировалось n0tb0dy 17 апр 2014, 15:35, всего редактировалось 2 раза.

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 116. Поведение Activity в Task. Intent-флаги, launc

Сообщение n0tb0dy » 17 апр 2014, 15:31

ТИХО САМ С СОБОЮ Я ВЕДУ БЕСЕДУ :lol:

в этой теме :D

Аватара пользователя
n0tb0dy
Сообщения: 135
Зарегистрирован: 14 фев 2014, 09:42

Re: Урок 116. Поведение Activity в Task. Intent-флаги, launc

Сообщение n0tb0dy » 29 июн 2014, 15:17

тишина в этой теме :)

может кто еще подскажет возможно ли в onCreate по проверке каких либо условий менять launchMode для текущей активити?

ну допустим активити имеет стандартный типа запуска, но при выполнении какого либо условия в onCreate поменять его скажем на singleInstance

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 116. Поведение Activity в Task. Intent-флаги, launc

Сообщение Mikhail_dev » 31 июл 2014, 09:05

просто довольно специфические вопросы.
Сам сейчас брожу по интернет для поиска ответа на то, как очистить стек активностей и показать единственную активность, которую сделать рутовой.
Сейчас использую intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);, но FLAG_ACTIVITY_CLEAR_TASK работает только для API выше 11. Есть IntentCompat.FLAG_ACTIVITY_CLEAR_TASK, но он тоже рабоатет только для API11 o_O
n0tb0dy писал(а):Добрый день!
Привожу скрин логов.
S0043.png
Может меня кто-то посвятить в этом вопросе?
[/syntax]
http://habrahabr.ru/post/222199/ - я там писал про Id и TID

Marimarti
Сообщения: 17
Зарегистрирован: 19 дек 2014, 21:29

Re: Урок 116. Поведение Activity в Task. Intent-флаги, launc

Сообщение Marimarti » 18 янв 2015, 05:13

Всем привет!
Подскажите в чем дело? Есть две активити: главная и вторая. В главной заполняется список и по клику открывается вторая активити. Во второй активити, кроме всего прочего, есть кнопка и по клику открывается браузер
[syntax=java5]
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://site.com" ))
startActivity(intent);
[/syntax]
Но если по кнопке Назад вернуться из браузера в приложение, то приложение пере создается, обе активити очищаются и срабатывает onCreate.
Добавил в манифест android:alwaysRetainTaskState="true", но на это он похоже не влияет. Так же пробовал добавлять к intent'у FLAG_ACTIVITY_NEW_TASK, но похоже это тоже не то.
Как исправить?

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

Re: Урок 116. Поведение Activity в Task. Intent-флаги, launc

Сообщение Foenix » 18 янв 2015, 11:21

что исправить и зачем? проштудируйте урок по жизненному циклу активити, а так же по сохранению данных активити например, при поворотах экрана.
А наудачу флаги лепить не стоит, нужно это делать осмысленно.
R.id.team

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

Marimarti
Сообщения: 17
Зарегистрирован: 19 дек 2014, 21:29

Re: Урок 116. Поведение Activity в Task. Intent-флаги, launc

Сообщение Marimarti » 18 янв 2015, 11:59

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

danek130995
Сообщения: 42
Зарегистрирован: 25 янв 2015, 18:57

Re: Урок 116. Поведение Activity в Task. Intent-флаги, launc

Сообщение danek130995 » 28 окт 2015, 22:29

У меня почему-то при попытке вывести активити в лог из второго приложения , выводятся только активити первого, когда оно уже пройдет в ActivityD, а активити второго не появляются в логах, если запущено первое. Почему так?

Аватара пользователя
Владислав2303
Сообщения: 17
Зарегистрирован: 02 ноя 2013, 15:11
Откуда: Минск
Контактная информация:

Re: Урок 116. Поведение Activity в Task. Intent-флаги, launc

Сообщение Владислав2303 » 13 ноя 2015, 23:23

Добрый день. Помогите пожалуйста решить такую проблему. Есть MainActivity. Способа ее запуска два: через иконку приложения и при открытии файла с расширением *.ext . По умолчанию все работает хорошо, кроме того, что если activity уже создано и мы его открываем с помощью файла с расширением *.ext то создается еще один экземпляр MainActivity и ложится на верх стека, а нужно, чтобы оно работало как singleTask(то есть открывало уже имеющееся Activity и убивало все Activity сверху). Но если поставить для MainActivity launchMode = "singleTask", то появляется другая проблема: если Activity уже существует и поверх него открыта другая Activity, то при запуске с иконки приложения он убивает все Activity выше MainActivity, а мне надо, чтобы через иконку он работал как launchMode="standart". То есть мне надо, чтобы при запуске приложения через иконку был эффект launchMode = "standart", а при запуске через файл с расширением *.ext был эффект launchMode = "singleTask". Буду очень благодарен за любые идеи.

Ответить