繁体   English   中英

当应用程序从backgroud中被杀死时,如何清除本地通知

[英]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;
    }

先感谢您。

要检查您的应用是否在后台运行,请执行以下步骤。

首先,请确保您有一个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判断您的应用是否在后台。

如有任何问题,请与我联系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM