стек мероприятий - PullRequest
       6

стек мероприятий

12 голосов
/ 07 апреля 2010

Есть ли способ визуализации стека активности, в какой-то момент во время отладки или обычного запуска?

Ответы [ 4 ]

6 голосов
/ 09 апреля 2010

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

ActivityManager         manager = (ActivityManager)getApplication().getSystemService( Activity.ACTIVITY_SERVICE );

Это покажет вам верх, низ и размер стека, а описание может оказаться полезным.Вам придется искать текущие задачи, чтобы найти текущее действие.

RunningTaskInfo         task = manager.getRunningTasks( 10 ).get( 0 );
task.baseActivity();
task.numActivities();
task.topActivity();
task.description();

Этот метод pkgLst может быть полезен.

RunningAppProcessInfo   app = manager.getRunningAppProcesses().get( 0 );
app.pkgList();

Не такой полезный или простой, как вынадеюсь, но это может помочь.

Activity предоставляет метод getCallingActivity (), который можно добавить в журналы onPause и onResume, как предлагалось ранее.

Для встроенных операций также есть if ( isChild() ) getParent();.

0 голосов
/ 18 февраля 2013

В эмуляторе или в рутированном телефоне вы можете использовать команду dumpsys shell

adb shell dumpsys activity

, который выводит существующие задачи. Вот маленький фрагмент

Running activities (most recent first):
TaskRecord{407d8a30 #6 A com.actionbarsherlock.sample.demos}
  Run #2: HistoryRecord{40792ec8 com.actionbarsherlock.sample.demos/.ActionItems}
  Run #1: HistoryRecord{40735008 com.actionbarsherlock.sample.demos/.SampleList}
TaskRecord{406de0b8 #2 A com.android.launcher}
  Run #0: HistoryRecord{405802c8 com.android.launcher/com.android.launcher2.Launcher}

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

TaskRecord{407d8a30 #6 A com.actionbarsherlock.sample.demos}
clearOnBackground=false numActivities=2 rootWasReset=true
affinity=com.actionbarsherlock.sample.demos
intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.actionbarsherlock.sample.demos/.SampleList}
realActivity=com.actionbarsherlock.sample.demos/.SampleList
lastActiveTime=1492068 (inactive for 2s)
* Hist #2: HistoryRecord{40792ec8 com.actionbarsherlock.sample.demos/.ActionItems}
    packageName=com.actionbarsherlock.sample.demos processName=com.actionbarsherlock.sample.demos
    launchedFromUid=10040 app=ProcessRecord{40650b68 1840:com.actionbarsherlock.sample.demos/10040}
    Intent { cmp=com.actionbarsherlock.sample.demos/.ActionItems }

Чтобы извлечь только Задачи, я использую grep

adb shell dumpsys activity | grep "Running activities" -A 10

Источник: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack

0 голосов
/ 07 апреля 2010

Я думаю, что нет прямого пути, но есть способ поместить журналы во все обратные вызовы, например, создать / приостановить / возобновить / уничтожить / и т.д., и посмотреть вызовы (например: Log.d ()).

0 голосов
/ 07 апреля 2010

Не то, что я знаю. Так как в вашем собственном приложении вы можете отследить это сами, перенеся себя в собственную структуру данных стека в onResume() и вытянув себя из этого стека в onPause().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...