Android 如何知道应用程序是否在前台?
我已经在我的应用程序中实现了推送通知。当我收到消息时,我必须检查应用程序是否在后台,因为如果应用程序不在后台,我必须打开应用程序,否则什么也不做 我一直在使用下面的代码,但这是不工作的Android 如何知道应用程序是否在前台?,android,Android,我已经在我的应用程序中实现了推送通知。当我收到消息时,我必须检查应用程序是否在后台,因为如果应用程序不在后台,我必须打开应用程序,否则什么也不做 我一直在使用下面的代码,但这是不工作的 public static boolean isApplicationSentToBackground(final Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTI
public static boolean isApplicationSentToBackground(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
return true;
}
}
return false;
}
公共静态布尔值isApplicationSentToBackground(最终上下文){
ActivityManager am=(ActivityManager)context.getSystemService(context.ACTIVITY_服务);
列表任务=am.getRunningTasks(1);
如果(!tasks.isEmpty()){
ComponentName topActivity=tasks.get(0).topActivity;
如果(!topActivity.getPackageName().equals(context.getPackageName())){
返回true;
}
}
返回false;
}
我也使用了下面的许可
<uses-permission android:name="android.permission.GET_TASKS" />
但是上面的代码不起作用。
我不能使用OnStart()
和OnDestroy()
,因为我的应用程序中有很多活动。
是否有其他人知道该应用程序是否在后台
谢谢这是前面的问题/答案。这是为了检查背景,但你也可以很容易地检查前景 如果应用程序不在后台,我必须打开应用程序,否则 什么也不做 使用
LocalBroadcastManager
-
在onResume()
中将您的活动注册为广播接收器,然后在onPause()
中将其注销
收到推送通知时发送广播。如果你的应用程序在前台,它将接收广播并相应地处理它-否则,什么都没有。一种方法是创建一个标志,自己跟踪前台状态。调用onPause()时,此标志设置为false;调用onResume()时,此标志设置为true。正确设置标志后,您可以使用它来确定活动其余部分中的操作。如果我使用此标志,则在所有不可能的活动中包括onResume和onPause。