美文网首页
判断Activity是否在前台

判断Activity是否在前台

作者: ncd | 来源:发表于2017-12-11 11:23 被阅读15次

    有时候打开其他应用的界面,在界面未销毁之前打开会出现异常,即使该界面的启动方式为singleInstance也会有一些问题(我遇到的是activity中在子线程里打开相机等硬件在连续打开此activity时会挂掉),这时最简单的方法就是判断此activity是否在前台,在就不需要打开。
    需要权限:
    <uses-permission android:name="android.permission.GET_TASKS"/>

    private boolean isActivityForeground(String className) {
        return isForeground(getApplicationContext(), className); 
    }
        
    public static boolean isForeground(Context context, String className) {  
        if (context == null || TextUtils.isEmpty(className))  
            return false;  
        ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);  
        List<ActivityManager.RunningTaskInfo> list = am.getRunningTasks(1);  
        if (list != null && list.size() > 0) {  
            ComponentName cpn = list.get(0).topActivity;  
            if (className.equals(cpn.getClassName()))  
                return true;  
        }  
        return false;  
    }
    

    相关文章

      网友评论

          本文标题:判断Activity是否在前台

          本文链接:https://www.haomeiwen.com/subject/xohdixtx.html