Merge pull request #4591 from ByteHamster/ensure-background-thread

Ensure that first DB query is executed in background thread
This commit is contained in:
ByteHamster 2020-10-25 19:00:55 +01:00 committed by GitHub
commit a0c604dc86
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 46 additions and 30 deletions

View File

@ -502,16 +502,27 @@ public class PlaybackService extends MediaBrowserServiceCompat {
stateManager.stopService();
return Service.START_NOT_STICKY;
}
Observable.fromCallable(
() -> {
if (playable instanceof FeedMedia) {
playable = DBReader.getFeedMedia(((FeedMedia) playable).getId());
return DBReader.getFeedMedia(((FeedMedia) playable).getId());
} else {
return playable;
}
if (playable == null) {
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
playableLoaded -> {
mediaPlayer.playMediaObject(playable, stream, startWhenPrepared,
prepareImmediately);
addPlayableToQueue(playable);
}, error -> {
Log.d(TAG, "Playable was not found. Stopping service.");
stateManager.stopService();
});
return Service.START_NOT_STICKY;
}
mediaPlayer.playMediaObject(playable, stream, startWhenPrepared, prepareImmediately);
addPlayableToQueue(playable);
} else {
Log.d(TAG, "Did not handle intent to PlaybackService: " + intent);
Log.d(TAG, "Extras: " + intent.getExtras());
@ -680,8 +691,11 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
private void startPlayingFromPreferences() {
Playable playable = Playable.PlayableUtils.createInstanceFromPreferences(getApplicationContext());
if (playable != null) {
Observable.fromCallable(() -> Playable.PlayableUtils.createInstanceFromPreferences(getApplicationContext()))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
playable -> {
if (PlaybackPreferences.getCurrentEpisodeIsStream() && !NetworkUtils.isStreamingAllowed()) {
displayStreamingNotAllowedNotification(
new PlaybackServiceStarter(this, playable)
@ -693,13 +707,15 @@ public class PlaybackService extends MediaBrowserServiceCompat {
stateManager.stopService();
return;
}
mediaPlayer.playMediaObject(playable, PlaybackPreferences.getCurrentEpisodeIsStream(), true, true);
mediaPlayer.playMediaObject(playable, PlaybackPreferences.getCurrentEpisodeIsStream(),
true, true);
stateManager.validStartCommandWasReceived();
PlaybackService.this.updateMediaSessionMetadata(playable);
addPlayableToQueue(playable);
} else {
}, error -> {
Log.d(TAG, "Playable was not loaded from preferences. Stopping service.");
stateManager.stopService();
}
});
}
/**