2012-03-14 80 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许可。