2013-04-09 3 views
3

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

Как я могу получить список всех Задач для моего текущего приложения, а затем получить действия в этих стеках задач? ActivityManager class позволяет мне запрашивать информацию о задаче на основе того, что происходит в последнее время или что работает, но как я могу запросить информацию о запросе только для моего текущего приложения?

Заранее спасибо.

+1

«Задача» не относится к приложению, а «Приложение» не относится к задаче. Задача может иметь различные действия из разных приложений в ней, и приложение может иметь действия, выполняемые в разных задачах. –

+0

Существует программа с открытым исходным кодом, которая в значительной степени делает это. Это отличный инструмент для того, чтобы попытаться разобраться и понять, как действуют флаги launchModes и Intent (или не ведут себя). Посмотрите на https://github.com/gnorsilva/Activities-LaunchMode-demo –

+1

. Одна из вещей, которых не хватает в Android, - это способ программного просмотра стека действий в задаче. Есть много приложений, которые были бы улучшены, если бы это было возможно. Кроме того, отладка будет проще.К сожалению, это невозможно :-( –

ответ

3

Как я могу получить список всех задач для моего текущего приложения

Там нет такого понятия. Задачи могут содержат действия из приложения. Чтобы провести аналогию, ни одному веб-сайту не принадлежит задний стек вкладки браузера, хотя страницы веб-сайта могут находиться в фоновом стеке вкладки браузера.

затем получить действия по этим задачам?

Это невозможно, так как деятельность не обязательно полностью связана с вашим процессом.

Класс ActivityManager позволяет мне запрашивать информацию о задаче на основе того, что происходит в последнее время или что работает, но как я могу запросить информацию о запросе только для моего текущего приложения?

У вас нет, строго говоря.

Вы можете перебирать выполняемые задачи, и вы можете найти те, где одна из ваших действий - baseActivity или topActivity на основе этих значений ComponentName.

Или ваша деятельность знает их идентификатор задания, полученный via getTaskId(). Если вам нужно, вы можете найти эти задачи в выполняемых задачах, сопоставляя значения идентификатора, чтобы узнать сведения о задаче на уровне задачи о задаче.

+0

ОК, выясняя, какие задачи выполняются мои действия (через getTaskID, как вы предлагаете) даст мне список задач. Как только у меня есть идентификатор задачи, я могу как разбить вниз, чтобы я мог видеть, где мои действия относятся к другим действиям в стеке? – user316117

+0

@ user316117: «Как я могу сломать стек, чтобы я мог видеть, где мои действия относятся к другим видам деятельности в стеке ? »- Я не считаю, что это возможно. – CommonsWare

1

Из версии sdk 21 теперь вы можете вызвать ActivityManager.getAppTasks(), чтобы получить задания, принадлежащие вашему приложению.

0

Если у вас есть доступ к adb, вы можете использовать команду ниже для просмотра всех задач и стеков.

adb shell am stack list 
Смежные вопросы