在某些时候根据需求,我们需要对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(); } }