Как запланировать WorkManager, когда приложение не на переднем плане - PullRequest
0 голосов
/ 22 апреля 2019

Я хочу запустить задачу, которая выполняет некоторые вызовы API и вносит изменения в локальную базу данных. Этого не должно происходить во время работы приложения, иначе оно вызовет хаос.

Как настроить запуск WorkManager, когда приложение не на переднем плане?

Я вижу, что есть метод setRequiresDeviceIdle(boolean), который кажется наиболее подходящим, но, к сожалению, он недоступен ниже API 23, и к этому нельзя прибегать.

Какие у меня есть варианты для достижения этой цели?

1 Ответ

0 голосов
/ 22 апреля 2019

Вы можете запустить расписание, а затем можете проверить, работает приложение или нет.Если приложение запущено, не вызывайте вызов API еще.Для проверки, запущено приложение или нет, используйте метод ниже

public static boolean isAppRunning(final Context context, final String packageName) {
            final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
            final List<ActivityManager.RunningAppProcessInfo> procInfos = activityManager.getRunningAppProcesses();
            if (procInfos != null)
            {
                for (final ActivityManager.RunningAppProcessInfo processInfo : procInfos) {
                    if (processInfo.processName.equals(packageName)) {
                        return true;
                    }
                }
            }
            return false;
        }
...