如何在应用程序不在前台时安排WorkManager

时间:2019-04-22 17:57:19

标签: android android-jetpack android-workmanager

我想运行一个执行一些API调用并对本地数据库进行更改的任务。在应用程序运行时不应发生这种情况,否则会造成严重破坏。

当应用程序不在前台时,如何设置workManager才能执行?

我看到有一个setRequiresDeviceIdle(boolean)方法似乎是最合适的方法,但是不幸的是在API 23下它不可用,并且没有办法。

要实现这一目标,我有什么选择?

1 个答案:

答案 0 :(得分:0)

您可以运行时间表,然后可以检查应用程序是否正在运行。如果应用正在运行,则不要调用api else调用。要检查应用是否正在运行,请使用以下方法

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;
        }