Fix a big issue with the download threads. Release 0.1.1
This commit is contained in:
		
							parent
							
								
									0332d8dd79
								
							
						
					
					
						commit
						0210fd8828
					
				| @ -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), | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 inorichi
						inorichi