mirror of
https://github.com/AntennaPod/AntennaPod.git
synced 2025-10-29 11:49:33 +00:00
Wait in SyncService before enqueueing subscriptions refresh (#7544)
Apparently requesting to run the manager cancels the already running one on some devices. This leads to an endless loop trying to refresh over and over again.
This commit is contained in:
parent
e9434f906d
commit
83199a6057
@ -15,6 +15,7 @@ import androidx.core.content.ContextCompat;
|
||||
import androidx.core.util.Pair;
|
||||
import androidx.work.Worker;
|
||||
import androidx.work.WorkerParameters;
|
||||
import de.danoeh.antennapod.event.FeedUpdateRunningEvent;
|
||||
import de.danoeh.antennapod.event.MessageEvent;
|
||||
import de.danoeh.antennapod.event.SyncServiceEvent;
|
||||
import de.danoeh.antennapod.model.feed.Feed;
|
||||
@ -77,6 +78,7 @@ public class SyncService extends Worker {
|
||||
try {
|
||||
activeSyncProvider.login();
|
||||
syncSubscriptions(activeSyncProvider);
|
||||
waitForDownloadServiceCompleted();
|
||||
if (someFeedWasNotRefreshedYet()) {
|
||||
// Note that this service might get called several times before the FeedUpdate completes
|
||||
Log.d(TAG, "Found new subscriptions. Need to refresh them before syncing episode actions");
|
||||
@ -110,6 +112,22 @@ public class SyncService extends Worker {
|
||||
}
|
||||
}
|
||||
|
||||
private void waitForDownloadServiceCompleted() {
|
||||
EventBus.getDefault().postSticky(new SyncServiceEvent(R.string.sync_status_wait_for_downloads));
|
||||
try {
|
||||
while (true) {
|
||||
FeedUpdateRunningEvent event = EventBus.getDefault().getStickyEvent(FeedUpdateRunningEvent.class);
|
||||
if (event == null || !event.isFeedUpdateRunning) {
|
||||
return;
|
||||
}
|
||||
//noinspection BusyWait
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean someFeedWasNotRefreshedYet() {
|
||||
for (Feed feed : DBReader.getFeedList()) {
|
||||
if (feed.getPreferences().getKeepUpdated() && feed.getLastRefreshAttempt() == 0) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user