When auto refreshing feeds, give network some time to get available

This commit is contained in:
Martin Fietz 2018-09-27 17:21:27 +02:00
parent 5a4219bf09
commit 3e6fc34550
2 changed files with 17 additions and 5 deletions

View File

@ -66,6 +66,7 @@ dependencies {
implementation "com.squareup.okio:okio:$okioVersion"
implementation "de.greenrobot:eventbus:$eventbusVersion"
implementation "io.reactivex:rxandroid:$rxAndroidVersion"
implementation 'org.awaitility:awaitility:3.1.2'
implementation "com.google.android.exoplayer:exoplayer:$exoPlayerVersion"
implementation "com.github.AntennaPod:AntennaPod-AudioPlayer:$audioPlayerVersion"

View File

@ -2,20 +2,31 @@ package de.danoeh.antennapod.core.util;
import android.content.Context;
import android.util.Log;
import org.awaitility.core.ConditionTimeoutException;
import java.util.concurrent.TimeUnit;
import de.danoeh.antennapod.core.storage.DBTasks;
import static org.awaitility.Awaitility.await;
import static org.awaitility.Awaitility.with;
public class FeedUpdateUtils {
private static final String TAG = "FeedUpdateUtils";
private FeedUpdateUtils() {
}
private FeedUpdateUtils() {}
public static void startAutoUpdate(Context context, Runnable callback) {
if (NetworkUtils.networkAvailable() && NetworkUtils.isDownloadAllowed()) {
try {
with().pollInterval(1, TimeUnit.SECONDS)
.await()
.atMost(10, TimeUnit.SECONDS)
.until(() -> NetworkUtils.networkAvailable() && NetworkUtils.isDownloadAllowed());
DBTasks.refreshAllFeeds(context, null, callback);
} else {
} catch (ConditionTimeoutException ignore) {
Log.d(TAG, "Blocking automatic update: no wifi available / no mobile updates allowed");
}
}
}