判断Activity是否在前台

2017-12-11  本文已影响15人  ncd

有时候打开其他应用的界面,在界面未销毁之前打开会出现异常,即使该界面的启动方式为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;  
}
上一篇下一篇

猜你喜欢

热点阅读