我想运行一个执行一些API调用并对本地数据库进行更改的任务。在应用程序运行时不应发生这种情况,否则会造成严重破坏。
当应用程序不在前台时,如何设置workManager才能执行?
我看到有一个setRequiresDeviceIdle(boolean)
方法似乎是最合适的方法,但是不幸的是在API 23下它不可用,并且没有办法。
要实现这一目标,我有什么选择?
答案 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;
}