如何在应用程序从后台被杀死时清除本地通知
How to clear local nottification when app is killed from backgroud
我想在后台滑动关闭应用时清除本地通知。
我尝试使用 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;
}
提前致谢。
要检查您的应用是否在后台运行,请按以下步骤操作。
首先,请确保您有一个扩展 class android.app.Application 的 class XXApplication,如果没有,则创建一个。
其次,创建一个classLifeCycleCallback
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) {
}
}
第三,在XXApplicationclass
中添加一个变量isBackground
最后,在 XXApplication 中调用 registerActivityLifecycleCallbacks(new LifeCycleCallback());
好了,现在你可以通过变量isBackground
.
判断你的应用是否处于后台
有任何问题请联系我
我想在后台滑动关闭应用时清除本地通知。 我尝试使用 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;
}
提前致谢。
要检查您的应用是否在后台运行,请按以下步骤操作。
首先,请确保您有一个扩展 class android.app.Application 的 class XXApplication,如果没有,则创建一个。
其次,创建一个classLifeCycleCallback
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) {
}
}
第三,在XXApplicationclass
中添加一个变量isBackground
最后,在 XXApplication 中调用 registerActivityLifecycleCallbacks(new LifeCycleCallback());
好了,现在你可以通过变量isBackground
.
有任何问题请联系我