From 5a5396625066e9fbb07d9399dc6d24b29da21d75 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Fri, 3 Apr 2020 11:53:25 +0200 Subject: [PATCH] Only load chapters when actually needed --- .../antennapod/fragment/AudioPlayerFragment.java | 12 +++++------- .../danoeh/antennapod/fragment/ChaptersFragment.java | 2 ++ .../de/danoeh/antennapod/core/storage/DBReader.java | 6 +----- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java index c1eff4e84..7f0326019 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java @@ -102,7 +102,7 @@ public class AudioPlayerFragment extends Fragment implements toolbar.setOnMenuItemClickListener(this); ExternalPlayerFragment externalPlayerFragment = new ExternalPlayerFragment(); - getFragmentManager().beginTransaction() + getChildFragmentManager().beginTransaction() .replace(R.id.playerFragment, externalPlayerFragment, ExternalPlayerFragment.TAG) .commit(); @@ -127,7 +127,7 @@ public class AudioPlayerFragment extends Fragment implements sbPosition.setOnSeekBarChangeListener(this); pager = root.findViewById(R.id.pager); - AudioPlayerPagerAdapter pagerAdapter = new AudioPlayerPagerAdapter(getFragmentManager()); + AudioPlayerPagerAdapter pagerAdapter = new AudioPlayerPagerAdapter(getChildFragmentManager()); pager.setAdapter(pagerAdapter); // Required for getChildAt(int) in ViewPagerBottomSheetBehavior to return the correct page pager.setOffscreenPageLimit(NUM_CONTENT_FRAGMENTS); @@ -355,12 +355,10 @@ public class AudioPlayerFragment extends Fragment implements updatePosition(new PlaybackPositionEvent(controller.getPosition(), controller.getDuration())); updatePlaybackSpeedButton(media); setupOptionsMenu(media); + } - if (media != null) { - List chapters = controller.getMedia().getChapters(); - boolean hasChapters = chapters != null && !chapters.isEmpty(); - pageIndicator.setDisabledPage(hasChapters ? -1 : 2); - } + public void setHasChapters(boolean hasChapters) { + pageIndicator.setDisabledPage(hasChapters ? -1 : 2); } @Override diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java index dc27e1f83..6d693f6cb 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java @@ -128,6 +128,7 @@ public class ChaptersFragment extends Fragment { disposable = Maybe.create(emitter -> { Playable media = controller.getMedia(); if (media != null) { + media.loadChapterMarks(); emitter.onSuccess(media); } else { emitter.onComplete(); @@ -146,6 +147,7 @@ public class ChaptersFragment extends Fragment { return; } adapter.setMedia(media); + ((AudioPlayerFragment) getParentFragment()).setHasChapters(adapter.getItemCount() > 0); int positionOfCurrentChapter = getCurrentChapter(media); updateChapterSelection(positionOfCurrentChapter); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java index f30cbcd05..c30f46315 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java @@ -590,9 +590,6 @@ public final class DBReader { if (!list.isEmpty()) { item = list.get(0); loadAdditionalFeedItemListData(list); - if (item.hasChapters()) { - loadChaptersOfFeedItem(adapter, item); - } } } return item; @@ -608,8 +605,7 @@ public final class DBReader { * than one FeedItem because this method might query the database several times for each item. * * @param itemId The ID of the FeedItem - * @return The FeedItem or null if the FeedItem could not be found. All FeedComponent-attributes - * as well as chapter marks of the FeedItem will also be loaded from the database. + * @return The FeedItem or null if the FeedItem could not be found. */ @Nullable public static FeedItem getFeedItem(final long itemId) {