2010-04-07 11 views

Antwort

6

Sie können nützliche Informationen mit dem Aktivitätenmanager erhalten.

Dies zeigt Ihnen die obere, untere und die Größe des Stapels, und die Beschreibung kann nützlich Sie müssen die laufenden Aufgaben durchsuchen, um die aktuelle Aktivität zu finden.

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

Dies hat eine pkgLst-Methode, die hilfreich sein kann.

Nicht so nützlich oder einfach wie Sie gehofft hatten, aber es könnte helfen.

Aktivität stellt die getCallingActivity() -Methode bereit, die Sie zu onPause und onResume hinzufügen können, wie zuvor vorgeschlagen.

Es gibt auch if (isChild()) getParent(); für eingebettete Aktivitäten.

+1

Ich weiß, dass es eine alte Frage ist, aber es hat mir geholfen, außer dass ich diese Berechtigung zu AndroidManifest hinzufügen musste:

+0

@MarioLenci GET_TASKS ist in API 21 veraltet https://developer.android.com/reference/android/Manifest.permission.html#GET_TASKS –

0

Nicht, dass ich mir dessen bewusst bin. Denn innerhalb Ihrer eigenen Anwendung können Sie dies selbst verfolgen, indem Sie sich in onResume() auf Ihre eigene Stack-Datenstruktur schieben und sich in onPause() von diesem Stack entfernen.

0

Es gibt keine direkte Möglichkeit, die ich denke, aber eine Möglichkeit besteht darin, alle Callbacks wie create/pause/resume/destroy/etc anzumelden und die Aufrufe zu sehen (zB: Log.d()).

0

Auf dem Emulator oder in einem verwurzelten Telefon Sie den dumpsys Shell-Befehl

adb shell dumpsys activity 

, die gibt die vorhandenen Aufgaben verwenden können. Hier ein kleiner Ausschnitt

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} 

Sie können sogar die Absicht erkennen, die die Aktivität gestartet

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 } 

Um nur die Aufgaben zu extrahieren, verwende ich grep

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

Quelle: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack