Как убрать локальное уведомление, когда приложение убито из backgroud - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу очистить локальное уведомление, когда приложение закрыто, проведённым из фона. Я пытался с методом 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;
    }

Заранее спасибо.

1 Ответ

0 голосов
/ 05 ноября 2018

Чтобы проверить, работает ли ваше приложение в фоновом режиме, выполните следующие действия.

Во-первых, убедитесь, что у вас есть класс 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) {

   }
}

В-третьих, добавьте переменную isBackground в XXApplication class

Наконец, в XXApplication вызвать registerActivityLifecycleCallbacks(new LifeCycleCallback());

Что ж, теперь вы можете судить, находится ли ваше приложение в фоновом режиме, по переменной isBackground.

Любой вопрос, пожалуйста, свяжитесь со мной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...