Do not start download service if there is nothing to download
This commit is contained in:
parent
66c91f9962
commit
bbb7cfe7ed
|
@ -53,19 +53,19 @@ public class APDownloadAlgorithm implements AutomaticDownloadAlgorithm {
|
||||||
final List<FeedItem> newItems = DBReader.getNewItemsList();
|
final List<FeedItem> newItems = DBReader.getNewItemsList();
|
||||||
candidates = new ArrayList<>(queue.size() + newItems.size());
|
candidates = new ArrayList<>(queue.size() + newItems.size());
|
||||||
candidates.addAll(queue);
|
candidates.addAll(queue);
|
||||||
for(FeedItem newItem : newItems) {
|
for (FeedItem newItem : newItems) {
|
||||||
FeedPreferences feedPrefs = newItem.getFeed().getPreferences();
|
FeedPreferences feedPrefs = newItem.getFeed().getPreferences();
|
||||||
FeedFilter feedFilter = feedPrefs.getFilter();
|
FeedFilter feedFilter = feedPrefs.getFilter();
|
||||||
if(!candidates.contains(newItem) && feedFilter.shouldAutoDownload(newItem)) {
|
if (!candidates.contains(newItem) && feedFilter.shouldAutoDownload(newItem)) {
|
||||||
candidates.add(newItem);
|
candidates.add(newItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// filter items that are not auto downloadable
|
// filter items that are not auto downloadable
|
||||||
Iterator<FeedItem> it = candidates.iterator();
|
Iterator<FeedItem> it = candidates.iterator();
|
||||||
while(it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
FeedItem item = it.next();
|
FeedItem item = it.next();
|
||||||
if(!item.isAutoDownloadable()) {
|
if (!item.isAutoDownloadable()) {
|
||||||
it.remove();
|
it.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,13 +74,12 @@ public class APDownloadAlgorithm implements AutomaticDownloadAlgorithm {
|
||||||
int downloadedEpisodes = DBReader.getNumberOfDownloadedEpisodes();
|
int downloadedEpisodes = DBReader.getNumberOfDownloadedEpisodes();
|
||||||
int deletedEpisodes = UserPreferences.getEpisodeCleanupAlgorithm()
|
int deletedEpisodes = UserPreferences.getEpisodeCleanupAlgorithm()
|
||||||
.makeRoomForEpisodes(context, autoDownloadableEpisodes);
|
.makeRoomForEpisodes(context, autoDownloadableEpisodes);
|
||||||
boolean cacheIsUnlimited = UserPreferences.getEpisodeCacheSize() == UserPreferences
|
boolean cacheIsUnlimited =
|
||||||
.getEpisodeCacheSizeUnlimited();
|
UserPreferences.getEpisodeCacheSize() == UserPreferences.getEpisodeCacheSizeUnlimited();
|
||||||
int episodeCacheSize = UserPreferences.getEpisodeCacheSize();
|
int episodeCacheSize = UserPreferences.getEpisodeCacheSize();
|
||||||
|
|
||||||
int episodeSpaceLeft;
|
int episodeSpaceLeft;
|
||||||
if (cacheIsUnlimited ||
|
if (cacheIsUnlimited || episodeCacheSize >= downloadedEpisodes + autoDownloadableEpisodes) {
|
||||||
episodeCacheSize >= downloadedEpisodes + autoDownloadableEpisodes) {
|
|
||||||
episodeSpaceLeft = autoDownloadableEpisodes;
|
episodeSpaceLeft = autoDownloadableEpisodes;
|
||||||
} else {
|
} else {
|
||||||
episodeSpaceLeft = episodeCacheSize - (downloadedEpisodes - deletedEpisodes);
|
episodeSpaceLeft = episodeCacheSize - (downloadedEpisodes - deletedEpisodes);
|
||||||
|
@ -89,14 +88,15 @@ public class APDownloadAlgorithm implements AutomaticDownloadAlgorithm {
|
||||||
FeedItem[] itemsToDownload = candidates.subList(0, episodeSpaceLeft)
|
FeedItem[] itemsToDownload = candidates.subList(0, episodeSpaceLeft)
|
||||||
.toArray(new FeedItem[episodeSpaceLeft]);
|
.toArray(new FeedItem[episodeSpaceLeft]);
|
||||||
|
|
||||||
Log.d(TAG, "Enqueueing " + itemsToDownload.length + " items for download");
|
if (itemsToDownload.length > 0) {
|
||||||
|
Log.d(TAG, "Enqueueing " + itemsToDownload.length + " items for download");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
DownloadRequester.getInstance().downloadMedia(false, context, itemsToDownload);
|
DownloadRequester.getInstance().downloadMedia(false, context, itemsToDownload);
|
||||||
} catch (DownloadRequestException e) {
|
} catch (DownloadRequestException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,13 +80,14 @@ public class DownloadRequester implements DownloadStateProvider {
|
||||||
* with the same source URL is already stored, this one will be skipped.
|
* with the same source URL is already stored, this one will be skipped.
|
||||||
* @return True if any of the download request was accepted, false otherwise.
|
* @return True if any of the download request was accepted, false otherwise.
|
||||||
*/
|
*/
|
||||||
public synchronized boolean download(@NonNull Context context,
|
public synchronized boolean download(@NonNull Context context, DownloadRequest... requests) {
|
||||||
DownloadRequest... requests) {
|
|
||||||
return download(context, false, requests);
|
return download(context, false, requests);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean download(@NonNull Context context, boolean cleanupMedia,
|
private boolean download(@NonNull Context context, boolean cleanupMedia, DownloadRequest... requests) {
|
||||||
DownloadRequest... requests) {
|
if (requests.length <= 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
|
|
||||||
ArrayList<DownloadRequest> requestsToSend = new ArrayList<>(requests.length);
|
ArrayList<DownloadRequest> requestsToSend = new ArrayList<>(requests.length);
|
||||||
|
|
Loading…
Reference in New Issue