我想从后台滑动关闭应用程序时清除本地通知。 我尝试使用isAppIsInBackground方法,但是它不起作用。 下面是我的代码:-
public static boolean isAppIsInBackground(Context context) {
boolean isInBackground = true;
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) {
List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {
if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
for (String activeProcess : processInfo.pkgList) {
if (activeProcess.equals(context.getPackageName())) {
isInBackground = false;
}
}
}
}
} else {
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
if (componentInfo.getPackageName().equals(context.getPackageName())) {
isInBackground = false;
}
}
return isInBackground;
}
谢谢。
答案 0 :(得分:0)
要检查您的应用是否在后台运行,请执行以下步骤。
首先,确保您有一个XXApplication类,该类扩展了android.app.Application类,如果没有,则创建一个。
第二,创建一个类LifeCycleCallback
class LifeCycleCallback implements ActivityLifecycleCallbacks{
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@SuppressLint("CheckResult")
@Override
public void onActivityStarted(Activity activity) {
isBackground = false;
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
isBackground = true;
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
}
第三,在XXApplication类中添加变量isBackground
最后,在XXApplication中调用registerActivityLifecycleCallbacks(new LifeCycleCallback());
好吧,现在您可以通过变量isBackground
来判断您的应用是否在后台。
有任何问题请与我联系。