Fix a big issue with the download threads. Release 0.1.1
This commit is contained in:
parent
0332d8dd79
commit
0210fd8828
3 changed files with 16 additions and 12 deletions
|
@ -39,8 +39,8 @@ android {
|
|||
minSdkVersion 16
|
||||
targetSdkVersion 23
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
versionCode 1
|
||||
versionName "0.1.0"
|
||||
versionCode 2
|
||||
versionName "0.1.1"
|
||||
|
||||
buildConfigField "String", "COMMIT_COUNT", "\"${getCommitCount()}\""
|
||||
buildConfigField "String", "COMMIT_SHA", "\"${getGitSha()}\""
|
||||
|
|
|
@ -41,7 +41,7 @@ public class DownloadManager {
|
|||
private PreferencesHelper preferences;
|
||||
private Gson gson;
|
||||
|
||||
private PublishSubject<Download> downloadsQueueSubject;
|
||||
private PublishSubject<List<Download>> downloadsQueueSubject;
|
||||
private BehaviorSubject<Boolean> runningSubject;
|
||||
private Subscription downloadsSubscription;
|
||||
|
||||
|
@ -67,7 +67,8 @@ public class DownloadManager {
|
|||
downloadsSubscription.unsubscribe();
|
||||
|
||||
downloadsSubscription = downloadsQueueSubject
|
||||
.flatMap(this::downloadChapter, preferences.downloadThreads())
|
||||
.concatMap(downloads -> Observable.from(downloads)
|
||||
.flatMap(this::downloadChapter, preferences.downloadThreads()))
|
||||
.onBackpressureBuffer()
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.map(download -> areAllDownloadsFinished())
|
||||
|
@ -102,6 +103,7 @@ public class DownloadManager {
|
|||
|
||||
// Used to avoid downloading chapters with the same name
|
||||
final List<String> addedChapters = new ArrayList<>();
|
||||
final List<Download> pending = new ArrayList<>();
|
||||
|
||||
for (Chapter chapter : event.getChapters()) {
|
||||
if (addedChapters.contains(chapter.name))
|
||||
|
@ -112,9 +114,10 @@ public class DownloadManager {
|
|||
|
||||
if (!prepareDownload(download)) {
|
||||
queue.add(download);
|
||||
if (isRunning) downloadsQueueSubject.onNext(download);
|
||||
pending.add(download);
|
||||
}
|
||||
}
|
||||
if (isRunning) downloadsQueueSubject.onNext(pending);
|
||||
}
|
||||
|
||||
// Public method to check if a chapter is downloaded
|
||||
|
@ -386,18 +389,19 @@ public class DownloadManager {
|
|||
if (queue.isEmpty())
|
||||
return false;
|
||||
|
||||
boolean hasPendingDownloads = false;
|
||||
if (downloadsSubscription == null)
|
||||
initializeSubscriptions();
|
||||
|
||||
final List<Download> pending = new ArrayList<>();
|
||||
for (Download download : queue) {
|
||||
if (download.getStatus() != Download.DOWNLOADED) {
|
||||
if (download.getStatus() != Download.QUEUE) download.setStatus(Download.QUEUE);
|
||||
if (!hasPendingDownloads) hasPendingDownloads = true;
|
||||
downloadsQueueSubject.onNext(download);
|
||||
pending.add(download);
|
||||
}
|
||||
}
|
||||
return hasPendingDownloads;
|
||||
downloadsQueueSubject.onNext(pending);
|
||||
|
||||
return !pending.isEmpty();
|
||||
}
|
||||
|
||||
public void stopDownloads() {
|
||||
|
|
|
@ -72,9 +72,9 @@ public class MainActivity extends BaseActivity {
|
|||
new PrimaryDrawerItem()
|
||||
.withName(R.string.label_library)
|
||||
.withIdentifier(R.id.nav_drawer_library),
|
||||
new PrimaryDrawerItem()
|
||||
.withName(R.string.label_recent_updates)
|
||||
.withIdentifier(R.id.nav_drawer_recent_updates),
|
||||
// new PrimaryDrawerItem()
|
||||
// .withName(R.string.label_recent_updates)
|
||||
// .withIdentifier(R.id.nav_drawer_recent_updates),
|
||||
new PrimaryDrawerItem()
|
||||
.withName(R.string.label_catalogues)
|
||||
.withIdentifier(R.id.nav_drawer_catalogues),
|
||||
|
|
Reference in a new issue