1.检测某Activity是否在当前Task的栈顶
或者说检测APP的某Activity是否已经启动,并在最app的最前面显示。
不废话了,直接代码吧。
/** * 检测某Activity是否在当前Task的栈顶 * appointClassName:指定类名称 */ public boolean isTopActivity(String appointClassName,Context context){ ActivityManager manager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE); List<ActivityManager.RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(1); String topClassName=null; if(null != runningTaskInfos){ topClassName=(runningTaskInfos.get(0).topActivity.getShortClassName()).toString(); } if(StringUtils.isEmpty(topClassName)){ return false; } LogUtils.e(topClassName+"类存在于栈顶;指定类:"+appointClassName+" 返回Boolean值:"+topClassName.contains(appointClassName)); return topClassName.contains(appointClassName); }
Note:
上述代码有一点不足之处就是,你的项目中不能有相似重复命名的类。
eg:有类AAABBBCCC,不能出现AAABBB、BBBCCC、AAA、BBB、CCC这样的。
虽然有弊端,但总算实用。如果谁有更好的实现方式请告知我哈!谢谢