我如何在前台检测到我的Android应用程序?

时间:2011-06-20 14:37:42

标签: android

我正在尝试使用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");
}

此代码是否正确? 或者也许有人知道更简单的变体? 谢谢!

1 个答案:

答案 0 :(得分:4)

最直接的方法是使用onResume()onPause()跟踪您的前景状态。请参阅Activity lifecycle model