Decouple sync service from other classes
This commit is contained in:
parent
70a847f6ba
commit
d08b9e196e
@ -6,6 +6,8 @@ import de.danoeh.antennapod.core.preferences.SleepTimerPreferences;
|
|||||||
import de.danoeh.antennapod.core.preferences.UsageStatistics;
|
import de.danoeh.antennapod.core.preferences.UsageStatistics;
|
||||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||||
import de.danoeh.antennapod.core.service.download.AntennapodHttpClient;
|
import de.danoeh.antennapod.core.service.download.AntennapodHttpClient;
|
||||||
|
import de.danoeh.antennapod.core.sync.SyncService;
|
||||||
|
import de.danoeh.antennapod.core.sync.queue.SynchronizationQueueSink;
|
||||||
import de.danoeh.antennapod.core.util.NetworkUtils;
|
import de.danoeh.antennapod.core.util.NetworkUtils;
|
||||||
import de.danoeh.antennapod.core.util.download.NetworkConnectionChangeHandler;
|
import de.danoeh.antennapod.core.util.download.NetworkConnectionChangeHandler;
|
||||||
import de.danoeh.antennapod.core.util.gui.NotificationUtils;
|
import de.danoeh.antennapod.core.util.gui.NotificationUtils;
|
||||||
@ -28,6 +30,7 @@ public class ClientConfigurator {
|
|||||||
SslProviderInstaller.install(context);
|
SslProviderInstaller.install(context);
|
||||||
NetworkUtils.init(context);
|
NetworkUtils.init(context);
|
||||||
NetworkConnectionChangeHandler.init(context);
|
NetworkConnectionChangeHandler.init(context);
|
||||||
|
SynchronizationQueueSink.setServiceStarterImpl(() -> SyncService.sync(context));
|
||||||
AntennapodHttpClient.setCacheDirectory(new File(context.getCacheDir(), "okhttp"));
|
AntennapodHttpClient.setCacheDirectory(new File(context.getCacheDir(), "okhttp"));
|
||||||
AntennapodHttpClient.setProxyConfig(UserPreferences.getProxyConfig());
|
AntennapodHttpClient.setProxyConfig(UserPreferences.getProxyConfig());
|
||||||
SleepTimerPreferences.init(context);
|
SleepTimerPreferences.init(context);
|
||||||
|
@ -35,7 +35,6 @@ import de.danoeh.antennapod.event.FeedListUpdateEvent;
|
|||||||
import de.danoeh.antennapod.event.MessageEvent;
|
import de.danoeh.antennapod.event.MessageEvent;
|
||||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||||
import de.danoeh.antennapod.model.download.DownloadStatus;
|
import de.danoeh.antennapod.model.download.DownloadStatus;
|
||||||
import de.danoeh.antennapod.core.sync.SyncService;
|
|
||||||
import de.danoeh.antennapod.core.sync.queue.SynchronizationQueueSink;
|
import de.danoeh.antennapod.core.sync.queue.SynchronizationQueueSink;
|
||||||
import de.danoeh.antennapod.model.download.DownloadError;
|
import de.danoeh.antennapod.model.download.DownloadError;
|
||||||
import de.danoeh.antennapod.core.util.LongList;
|
import de.danoeh.antennapod.core.util.LongList;
|
||||||
@ -119,7 +118,7 @@ public final class DBTasks {
|
|||||||
SharedPreferences prefs = context.getSharedPreferences(PREF_NAME, MODE_PRIVATE);
|
SharedPreferences prefs = context.getSharedPreferences(PREF_NAME, MODE_PRIVATE);
|
||||||
prefs.edit().putLong(PREF_LAST_REFRESH, System.currentTimeMillis()).apply();
|
prefs.edit().putLong(PREF_LAST_REFRESH, System.currentTimeMillis()).apply();
|
||||||
|
|
||||||
SyncService.sync(context);
|
SynchronizationQueueSink.syncNow();
|
||||||
// Note: automatic download of episodes will be done but not here.
|
// Note: automatic download of episodes will be done but not here.
|
||||||
// Instead it is done after all feeds have been refreshed (asynchronously),
|
// Instead it is done after all feeds have been refreshed (asynchronously),
|
||||||
// in DownloadService.onDestroy()
|
// in DownloadService.onDestroy()
|
||||||
|
@ -3,12 +3,21 @@ package de.danoeh.antennapod.core.sync.queue;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import de.danoeh.antennapod.core.sync.LockingAsyncExecutor;
|
import de.danoeh.antennapod.core.sync.LockingAsyncExecutor;
|
||||||
import de.danoeh.antennapod.core.sync.SyncService;
|
|
||||||
import de.danoeh.antennapod.core.sync.SynchronizationSettings;
|
import de.danoeh.antennapod.core.sync.SynchronizationSettings;
|
||||||
import de.danoeh.antennapod.model.feed.FeedMedia;
|
import de.danoeh.antennapod.model.feed.FeedMedia;
|
||||||
import de.danoeh.antennapod.net.sync.model.EpisodeAction;
|
import de.danoeh.antennapod.net.sync.model.EpisodeAction;
|
||||||
|
|
||||||
public class SynchronizationQueueSink {
|
public class SynchronizationQueueSink {
|
||||||
|
// To avoid a dependency loop of every class to SyncService, and from SyncService back to every class.
|
||||||
|
private static Runnable serviceStarterImpl = () -> { };
|
||||||
|
|
||||||
|
public static void setServiceStarterImpl(Runnable serviceStarter) {
|
||||||
|
serviceStarterImpl = serviceStarter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void syncNow() {
|
||||||
|
serviceStarterImpl.run();
|
||||||
|
}
|
||||||
|
|
||||||
public static void clearQueue(Context context) {
|
public static void clearQueue(Context context) {
|
||||||
LockingAsyncExecutor.executeLockedAsync(new SynchronizationQueueStorage(context)::clearQueue);
|
LockingAsyncExecutor.executeLockedAsync(new SynchronizationQueueStorage(context)::clearQueue);
|
||||||
@ -20,7 +29,7 @@ public class SynchronizationQueueSink {
|
|||||||
}
|
}
|
||||||
LockingAsyncExecutor.executeLockedAsync(() -> {
|
LockingAsyncExecutor.executeLockedAsync(() -> {
|
||||||
new SynchronizationQueueStorage(context).enqueueFeedAdded(downloadUrl);
|
new SynchronizationQueueStorage(context).enqueueFeedAdded(downloadUrl);
|
||||||
SyncService.sync(context);
|
syncNow();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,7 +39,7 @@ public class SynchronizationQueueSink {
|
|||||||
}
|
}
|
||||||
LockingAsyncExecutor.executeLockedAsync(() -> {
|
LockingAsyncExecutor.executeLockedAsync(() -> {
|
||||||
new SynchronizationQueueStorage(context).enqueueFeedRemoved(downloadUrl);
|
new SynchronizationQueueStorage(context).enqueueFeedRemoved(downloadUrl);
|
||||||
SyncService.sync(context);
|
syncNow();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,7 +49,7 @@ public class SynchronizationQueueSink {
|
|||||||
}
|
}
|
||||||
LockingAsyncExecutor.executeLockedAsync(() -> {
|
LockingAsyncExecutor.executeLockedAsync(() -> {
|
||||||
new SynchronizationQueueStorage(context).enqueueEpisodeAction(action);
|
new SynchronizationQueueStorage(context).enqueueEpisodeAction(action);
|
||||||
SyncService.sync(context);
|
syncNow();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user