检测某Activity是否在当前Task的栈顶___Android基础篇

文 | 莫若吻

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这样的。

虽然有弊端,但总算实用。如果谁有更好的实现方式请告知我哈!谢谢






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值