2012-03-14 30 views
1

我有很多關閉活動的應用程序,用戶可以在活動之間漫步。如何找到某些活動是否在堆棧上(僅用於調用finish())或不在堆棧上?如何查找某些活動是否在堆棧上(僅用於調用finish())或不在堆棧上?

+0

你能否提供一個更好的例子來說明爲什麼你想找到一個關閉它的活動?我想不出你想要去的一個理由,並關閉一個隨機在棧上的活動。 – BoredAndroidDeveloper 2012-03-14 12:51:50

回答

0

你需要更清楚一點你正在尋找的東西。

這個類可以用來知道正在運行的進程的狀態。 http://developer.android.com/reference/android/app/ActivityManager.html

還對你的AndroidManifest.xml中添加活性SingleInstace (應用程序 - >活動 - >啓動模式 - > SingleInstance)。 如果您的活動正在運行,它不會創建一個新的。

使用此功能可以幫助您清除應用中以前稱爲A之前的所有頂級活動。

Intent intent = new Intent(this, A.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
0

可以檢索的活動任務(和組件參與每一項任務)像這樣的列表:

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
List<RunningTaskInfo> tasks = am.getRunningTasks(1); 
if (!tasks.isEmpty()) { 
    ComponentName topActivity = tasks.get(0).topActivity; 
    ... 
} 

然而,這需要你要求在AndroidManifest的android.permission.GET_TASKS許可。