diff --git a/app/src/main/java/org/schabi/newpipe/App.java b/app/src/main/java/org/schabi/newpipe/App.java index c182bfcfe..2ae21137f 100644 --- a/app/src/main/java/org/schabi/newpipe/App.java +++ b/app/src/main/java/org/schabi/newpipe/App.java @@ -10,6 +10,8 @@ import android.content.Intent; import android.os.Build; import android.util.Log; +import com.nostra13.universalimageloader.cache.memory.impl.LRULimitedMemoryCache; +import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache; import com.nostra13.universalimageloader.cache.memory.impl.WeakMemoryCache; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; @@ -81,10 +83,7 @@ public class App extends Application { initNotificationChannel(); // Initialize image loader - ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this) - .memoryCache(new WeakMemoryCache()) - .build(); - ImageLoader.getInstance().init(config); + ImageLoader.getInstance().init(getImageLoaderConfigurations(10)); configureRxJavaErrorHandler(); } @@ -122,6 +121,12 @@ public class App extends Application { }); } + private ImageLoaderConfiguration getImageLoaderConfigurations(final int memoryCacheSizeMb) { + return new ImageLoaderConfiguration.Builder(this) + .memoryCache(new LRULimitedMemoryCache(memoryCacheSizeMb * 1024 * 1024)) + .build(); + } + private void initACRA() { try { final ACRAConfiguration acraConfig = new ConfigurationBuilder(this) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/local/PlaylistAppendDialog.java b/app/src/main/java/org/schabi/newpipe/fragments/local/PlaylistAppendDialog.java index 6aca5ae70..7145d91d7 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/local/PlaylistAppendDialog.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/local/PlaylistAppendDialog.java @@ -1,5 +1,6 @@ package org.schabi.newpipe.fragments.local; +import android.annotation.SuppressLint; import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; @@ -25,6 +26,7 @@ import java.util.Collections; import java.util.List; import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; public final class PlaylistAppendDialog extends PlaylistDialog { private static final String TAG = PlaylistAppendDialog.class.getCanonicalName(); @@ -32,6 +34,8 @@ public final class PlaylistAppendDialog extends PlaylistDialog { private RecyclerView playlistRecyclerView; private LocalItemListAdapter playlistAdapter; + private Disposable playlistReactor; + public static PlaylistAppendDialog fromStreamInfo(final StreamInfo info) { PlaylistAppendDialog dialog = new PlaylistAppendDialog(); dialog.setInfo(Collections.singletonList(new StreamEntity(info))); @@ -68,6 +72,15 @@ public final class PlaylistAppendDialog extends PlaylistDialog { playlistAdapter = new LocalItemListAdapter(getActivity()); } + @Override + public void onDestroy() { + super.onDestroy(); + if (playlistReactor != null) playlistReactor.dispose(); + playlistReactor = null; + playlistRecyclerView = null; + playlistAdapter = null; + } + /*////////////////////////////////////////////////////////////////////////// // Views //////////////////////////////////////////////////////////////////////////*/ @@ -99,18 +112,20 @@ public final class PlaylistAppendDialog extends PlaylistDialog { return; final long playlistId = ((PlaylistMetadataEntry) selectedItem).uid; - final Toast successToast = Toast.makeText(getContext(), - R.string.playlist_add_stream_success, Toast.LENGTH_SHORT); + @SuppressLint("ShowToast") + final Toast successToast = Toast.makeText(getContext(), R.string.playlist_add_stream_success, + Toast.LENGTH_SHORT); playlistManager.appendToPlaylist(playlistId, getStreams()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(ignored -> successToast.show()); + .doOnDispose(successToast::show) + .subscribe(ignored -> {}); getDialog().dismiss(); } }); - playlistManager.getPlaylists() + playlistReactor = playlistManager.getPlaylists() .observeOn(AndroidSchedulers.mainThread()) .subscribe(metadataEntries -> { if (metadataEntries.isEmpty()) { @@ -118,9 +133,13 @@ public final class PlaylistAppendDialog extends PlaylistDialog { return; } - playlistAdapter.clearStreamItemList(); - playlistAdapter.addItems(metadataEntries); - playlistRecyclerView.setVisibility(View.VISIBLE); + if (playlistAdapter != null) { + playlistAdapter.clearStreamItemList(); + playlistAdapter.addItems(metadataEntries); + } + if (playlistRecyclerView != null) { + playlistRecyclerView.setVisibility(View.VISIBLE); + } }); }