如何在前台检测我的Android应用程序?
我正在使用BroadcastReceiver的下一个代码尝试了解前台是否有我的应用程序:如何在前台检测我的Android应用程序?,android,Android,我正在使用BroadcastReceiver的下一个代码尝试了解前台是否有我的应用程序: boolean inForeground = false; ActivityManager actMngr = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningAppProcessInfo> runningAppProcesses = actMngr.getRunningAppPro
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;
}
}
这个代码正确与否?
或者有人知道更简单的变体?
谢谢 最直接的方法是使用
onResume()
和onPause()
跟踪前台状态。请参阅。但是如果我有超过100个活动,并且我需要从BroadcastReceiver了解我的应用程序还是没有?BroadcastReceiver甚至不引用一个活动,因为它是在AndroidManifest.xml文件中定义的?也就是说,为什么您需要知道前台活动是否来自同一个包?我认为您的第二个解决方案几乎是正确的。您需要检查get(0)
返回的RunningTaskInfo的numRunning
标志。top活动可以停止并保持。
if (actMngr.getRunningTasks(1).get(0).topActivity.getPackageName().equals(context.getPackageName())){
Log.d(TAG, "My");
} else {
Log.d(TAG, "Not my");
}