2011-11-03 17 views

Trả lời

0

Tôi không chắc chắn tôi có được nó tốt ... Bạn muốn quay trở lại hoạt động trước đó? Nếu có, hãy kết thúc hoạt động hiện tại bạn sẽ quay lại hoạt động trước đó.

+0

tôi muốn tìm thấy rằng ở hoạt động E, tôi đã điều hướng từ A, B, C, D giống như thế này – azzits

+0

Được rồi, Rajdeep Dua có câu trả lời. : P –

5

Đoạn code dưới đây có thể được sử dụng để trích xuất tất cả các nhiệm vụ và hoạt động hàng đầu trong mỗi công việc trong ngăn xếp trở lại

ActivityManager m = (ActivityManager) ctx.getSystemService(ctx.ACTIVITY_SERVICE); 
List<RunningTaskInfo> runningTaskInfoList = m.getRunningTasks(10); 
Iterator<RunningTaskInfo> itr = runningTaskInfoList.iterator(); 
while(itr.hasNext()){ 
    RunningTaskInfo runningTaskInfo = (RunningTaskInfo)itr.next(); 
    int id = runningTaskInfo.id; 
    CharSequence desc= runningTaskInfo.description; 
    int numOfActivities = runningTaskInfo.numActivities; 
    String topActivity = runningTaskInfo.topActivity.getShortClassName(); 
} 
+4

Điều này không giống như ngăn xếp lại - ngăn xếp lưng có thể liên quan đến nhiều hoạt động trong cùng một tác vụ. Tôi không nghĩ rằng có một cách để làm những gì OP đang yêu cầu. –

+2

Ngoài ra, điều này cần quyền GET_TASK – for3st

+0

Vì LOLLIPOP (sdk 21+) không được chấp nhận và chỉ trả về một tập con rất nhỏ thông tin được cung cấp trong các phiên bản cũ vì lý do bảo mật – for3st

0

trên thực tế, bạn có thể lấy id nhiệm vụ từ runningtaskinfo sử dụng getRunningTasks và sau đó, lấy recenttaskinfo bằng cách sử dụng getRecentTasks bằng cách so sánh id tác vụ. bây giờ bạn có thể khởi động lại hoạt động đó bằng cách sử dụng startactivity, với baseintent trong recenttaskinfo.

5

Bạn có thể sử dụng "adb shell dumpsys hoạt động hoạt động" lệnh

để tham khảo http://www.onsandroid.com/2015/01/find-back-stack-activities-in-android.html

+0

Tôi đã nhận được danh sách các hoạt động trong ngăn xếp bây giờ làm thế nào tôi có thể giết? giả sử hoạt động thứ 3 trong ngăn xếp –

+0

là có thể thực hiện điều này thông qua mã không? –

0

Như getRunningTasks(..) đã bị phản đối hoặc nếu bạn không muốn để thêm quyền đặc biệt để ứng dụng của bạn ở đây là giải pháp thay thế nếu tất cả các hoạt động là của bạn: bạn có thể đánh dấu một số nhận dạng (không phải bản thân hoạt động là có thể cần phải thu gom rác) trong một singleton Stack, LinkedList hoặc LinkedHashSet: in onPause() a đ mã định danh vào ngăn xếp và xóa nó trong onResume().

Bạn có thể kiểm tra nội dung của ngăn xếp đó để biết liệu có bất kỳ hoạt động nào và chuỗi đã được tạo hay không.

Bạn có thể xóa mã của mình và quên làm điều đó theo cách thủ công nếu tất cả hoạt động của bạn lấy được từ hoạt động cơ bản chung cho ứng dụng của bạn.

0

Tôi khuyên bạn nên sử dụng startActivityForResult thay vì startActivity, sau đó để truy xuất nguồn gốc/nguồn hoạt động gọi getCallingActivity(). GetClassName().

Làm thế nào để A biết nó đến từ nhà? Sử dụng getIntent() getAction của nó() -> android.intent.action.MAIN và getCategories() -> android.intent.category.LAUNCHER

1

Tôi nghĩ bạn có thể làm điều đó bằng cách lắng nghe những thay đổi của các hoạt động , thông qua API này registerActivityLifecycleCallbacks:

https://developer.android.com/reference/android/app/Application.html#registerActivityLifecycleCallbacks(android.app.Application.ActivityLifecycleCallbacks)

https://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html

Điều này sẽ giúp bạn thêm vào một chồng các lớp học của riêng bạn, và xem đầy đủ tình trạng như bạn muốn.

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