美文网首页
判断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