很多时候我们在创建或是销毁activity时可以先去判断某个Activity是否存在系统中,即使存在系统中了,它是否已经启动了?
下面我们用代码进行判断:
- //判断某一个类是否存在任务栈里面
- private boolean isExistMainActivity(Class<?> activity){
- Intent intent = new Intent(this, activity);
- ComponentName cmpName = intent.resolveActivity(getPackageManager());
- boolean flag = false;
- if (cmpName != null) { // 说明系统中存在这个activity
- ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
- List<RunningTaskInfo> taskInfoList = am.getRunningTasks(10); //获取从栈顶开始往下查找的10个activity
- for (RunningTaskInfo taskInfo : taskInfoList) {
- if (taskInfo.baseActivity.equals(cmpName)) { // 说明它已经启动了
- flag = true;
- break; //跳出循环,优化效率
- }
- }
- }
- return flag;
- }
那么我就想取栈顶呢,代码是这样的:(
am.getRunningTasks(1).get(0).topActivity).toString();
在代码配置文件AndroidManifest.xml 加上权限 <uses-permission android:name = “android.permission.GET_TASKS”/>