Intereting Posts
SwitchCompat рисует дополнительные строки Запись видео с использованием MediaRecorder и FileOutputStream создает видеофайл, который нельзя воспроизвести Ошибка Proguard: Ожидание разделителя пути класса – не знаю, где мне нужно поместить путь в кавычки Задержка при использовании PlaceAutocomplete без использования Rest API ViewPager в android выполняет полный экран? Есть ли способ для Activity узнать, какой фрагмент был только что создан? Отказ коренного кода на libwebviewchromium.so Как получить имя контакта от его номера Android NDK создает необоснованные большие двоичные файлы, как оптимизировать размер .so? Принудительное переключение на точные языки Метеор: ANDROID_HOME не установлен, даже если он установлен Доступ к длинному ключу из метаданных из AndroidManifeast.xml Попросите кнопку выполнить OnClickListener в конце анимации пульсации (Тема материала) Прокрутка вниз в recyclerview с несколькими типами просмотра Что я должен добавить в манифест для отладки приложения Android на самом устройстве?

Стек операций

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

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

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(); Для встроенных действий.

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

Прямого способа я не думаю, но способ заключается в том, чтобы поместить журналы во все обратные вызовы на create / pause / resume / destroy / etc и посмотреть вызовы (Ex: Log.d ()).

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

 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