2010-04-07 30 views
12

Có cách nào để sắp xếp chồng hoạt động, tại một thời điểm nào đó trong khi gỡ lỗi hoặc chạy bình thường không?hoạt động ngăn xếp

Trả lời

6

Bạn có thể nhận được một số thông tin hữu ích với người quản lý hoạt động.

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

Điều này sẽ cho bạn thấy phần trên cùng, dưới cùng của chồng và mô tả có thể hữu ích. Bạn sẽ phải tìm kiếm các tác vụ đang chạy để tìm hoạt động hiện tại.

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

Điều này có phương pháp pkgLst có thể hữu ích.

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

Không hữu ích hoặc đơn giản như bạn đang mong đợi, nhưng nó có thể hữu ích.

Hoạt động cung cấp phương thức getCallingActivity() mà bạn có thể thêm vào nhật ký ở chế độ onPause và onResume như được đề xuất trước đó.

Ngoài ra còn có if (isChild()) getParent(); cho các hoạt động được nhúng.

+1

Tôi biết đó là một qustion cũ, nhưng nó đã giúp tôi ngoại trừ việc tôi cần thêm quyền này vào AndroidManifest:

+0

@MarioLenci GET_TASKS không được dùng nữa trong API 21 https://developer.android.com/reference/android/Manifest.permission.html#GET_TASKS –

0

Không phải là tôi biết. Đối với ứng dụng của riêng bạn, bạn có thể tự mình theo dõi chính mình bằng cách đẩy mình vào cấu trúc dữ liệu ngăn xếp của riêng bạn trong onResume() và tự bật ra khỏi ngăn xếp đó trong onPause().

0

Không có cách nào trực tiếp tôi nghĩ, nhưng một cách là đặt nhật ký trong tất cả các cú gọi lại khi tạo/tạm dừng/tiếp tục/hủy/etc và xem các cuộc gọi (Ví dụ: Log.d()).

0

Trên giả lập hoặc trong một chiếc điện thoại bắt nguồn từ bạn có thể sử dụng dumpsys lệnh shell

adb shell dumpsys activity 

mà kết quả đầu ra của công việc hiện tại. Dưới đây là một ít đoạn

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} 

Bạn thậm chí có thể thấy mục đích mà bắt đầu các hoạt động

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 } 

Để trích xuất chỉ Tasks, tôi sử dụng grep

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

Nguồn: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack

Các vấn đề liên quan