两种判断APP是否在运行中的比较


面这两种方式都可以,但是有区别,

例如用户在APP中,过了会屏幕变暗了,此时activity 只是onstop(因为不可见了),但是不会执行ondestroy,

此时按照第一种方式,返回的就是true,表明正在运行

第二种方式返回的也是true,因为数量为0了,此时表明在后台


另外一点,如果是系统设置界面覆盖APP,发现都是表明APP正在运行中,可能是因为设置页就是相当于一个dialog,不会引起activity 生命周期的变化吧


   public boolean isAppRunning(Context context) {

        try {
            ActivityManager manager = (ActivityManager) context
                    .getSystemService(Context.ACTIVITY_SERVICE);
            ActivityManager.RunningTaskInfo info = manager.getRunningTasks(1).get(0);
            return info != null && info.topActivity != null && info.topActivity.getPackageName().equals(getApplicationContext().getPackageName());
        } catch (Throwable e) {
        }
        return false;
    }



2.
ActivityLifecycleCallbacks

/**
 * 判断当前APP是否在运行中,mActivityCount=0,表明APP不在
 * @return
 */
public boolean appOnBackGround(){
    if (mActivityCount == 0){
        return true;
    }else {
        return false;
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值