我正在尝试使用BroadcastReceiver的下一个代码了解前台的应用程序:
boolean inForeground = false;
ActivityManager actMngr = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> runningAppProcesses = actMngr.getRunningAppProcesses();
for (RunningAppProcessInfo pi : runningAppProcesses) {
if (context.getPackageName().equals(pi.processName)) {
inForeground = pi.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND;
}
}
但是这段代码总是返回 true ,即使我的应用程序是在后台运行。 我找到了下一个解决方案:
if (actMngr.getRunningTasks(1).get(0).topActivity.getPackageName().equals(context.getPackageName())){
Log.d(TAG, "My");
} else {
Log.d(TAG, "Not my");
}
此代码是否正确? 或者也许有人知道更简单的变体? 谢谢!