判断App处于后台还是前台

来源:互联网 发布:金蝶餐饮软件 编辑:程序博客网 时间:2024/06/05 14:10

        在某些时候根据需求,我们需要对App处于前台还是后台进行判断。比如一些推送消息,我们处于前台时可能弹出一个界面或者弹出一个弹窗等等操作;当App处于后台时,我们一般会采用通知栏的形式进行提示用户,有时要求调用电源管理器当来消息的时候点亮屏幕。所以就搜了一些资料总结出以下两个方法:

(1)为判断App处于前台还是后台

/** *判断当前应用程序处于前台还是后台 */public static boolean isApplicationBroughtToBackground(final Context context) {    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);    List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);    if (!tasks.isEmpty()) {        ComponentName topActivity = tasks.get(0).topActivity;        if (!topActivity.getPackageName().equals(context.getPackageName())) {            return true;        }    }    return false;}

(2)调用电源管理器点亮屏幕

/*** * 获取电源管理器,点亮屏幕操作 */private void getPower() {    PowerManager pm = (PowerManager) APP.getContext().getSystemService(Context.POWER_SERVICE);    KeyguardManager keyguardManager = (KeyguardManager) APP.getContext().getSystemService(Context.KEYGUARD_SERVICE);    KeyguardManager.KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("");    //获取电源管理器对象    //获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag    PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "bright");    if (!pm.isScreenOn()) {        wakeLock.acquire();        wakeLock.release();    }}

0 0
原创粉丝点击