From 9c661bd283d859b6a1eae84f6c412aad913f8157 Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Sat, 14 Aug 2021 16:42:50 +0200 Subject: [PATCH] Fix a bunch of potential memory leaks --- .../play/ui/activity/MainActivity.java | 3 ++- .../ui/fragment/PlayerBottomSheetFragment.java | 6 ++++++ .../fragment/dialog/PlaylistChooserDialog.java | 18 ++++++++---------- .../fragment/dialog/PlaylistEditorDialog.java | 8 ++++++-- .../play/ui/fragment/dialog/RatingDialog.java | 11 ++++++----- .../ui/fragment/dialog/ServerSignupDialog.java | 6 ++++++ 6 files changed, 34 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java b/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java index e8b43430..f4128916 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java @@ -65,6 +65,7 @@ public class MainActivity extends BaseActivity { protected void onDestroy() { super.onDestroy(); connectivityStatusReceiverManager(false); + bind = null; } public void init() { @@ -186,7 +187,7 @@ public class MainActivity extends BaseActivity { if (Objects.requireNonNull(navController.getCurrentDestination()).getId() == R.id.landingFragment) { navController.navigate(R.id.action_landingFragment_to_loginFragment); - } else if(Objects.requireNonNull(navController.getCurrentDestination()).getId() == R.id.settingsFragment) { + } else if (Objects.requireNonNull(navController.getCurrentDestination()).getId() == R.id.settingsFragment) { navController.navigate(R.id.action_settingsFragment_to_loginFragment); } } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java index 8265e6d6..c365a3f1 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java @@ -102,6 +102,12 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE activity.removeMusicServiceEventListener(this); } + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + private void initQueueSlideView() { bind.playerBodyLayout.playerSongCoverViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/PlaylistChooserDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/PlaylistChooserDialog.java index 65fd1ee7..0088ca21 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/PlaylistChooserDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/PlaylistChooserDialog.java @@ -2,7 +2,6 @@ package com.cappielloantonio.play.ui.fragment.dialog; import android.app.AlertDialog; import android.app.Dialog; -import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -14,7 +13,6 @@ import androidx.recyclerview.widget.LinearLayoutManager; import com.cappielloantonio.play.R; import com.cappielloantonio.play.adapter.PlaylistHorizontalAdapter; import com.cappielloantonio.play.databinding.DialogPlaylistChooserBinding; -import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.viewmodel.PlaylistChooserViewModel; import java.util.Objects; @@ -23,17 +21,12 @@ public class PlaylistChooserDialog extends DialogFragment { private static final String TAG = "ServerSignupDialog"; private DialogPlaylistChooserBinding bind; - private MainActivity activity; - private Context context; private PlaylistChooserViewModel playlistChooserViewModel; private PlaylistHorizontalAdapter playlistHorizontalAdapter; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - activity = (MainActivity) getActivity(); - context = requireContext(); - bind = DialogPlaylistChooserBinding.inflate(LayoutInflater.from(requireContext())); playlistChooserViewModel = new ViewModelProvider(requireActivity()).get(PlaylistChooserViewModel.class); @@ -48,6 +41,12 @@ public class PlaylistChooserDialog extends DialogFragment { return builder.create(); } + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + @Override public void onStart() { super.onStart(); @@ -89,12 +88,11 @@ public class PlaylistChooserDialog extends DialogFragment { bind.playlistDialogRecyclerView.setAdapter(playlistHorizontalAdapter); playlistChooserViewModel.getPlaylistList().observe(requireActivity(), playlists -> { - if(playlists.size() > 0) { + if (playlists.size() > 0) { if (bind != null) bind.noPlaylistsCreatedTextView.setVisibility(View.GONE); if (bind != null) bind.playlistDialogRecyclerView.setVisibility(View.VISIBLE); playlistHorizontalAdapter.setItems(playlists); - } - else { + } else { if (bind != null) bind.noPlaylistsCreatedTextView.setVisibility(View.VISIBLE); if (bind != null) bind.playlistDialogRecyclerView.setVisibility(View.GONE); } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/PlaylistEditorDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/PlaylistEditorDialog.java index 709107c6..9ebece34 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/PlaylistEditorDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/PlaylistEditorDialog.java @@ -29,7 +29,6 @@ public class PlaylistEditorDialog extends DialogFragment { private DialogPlaylistEditorBinding bind; private MainActivity activity; - private Context context; private PlaylistEditorViewModel playlistEditorViewModel; private String playlistName; @@ -38,7 +37,6 @@ public class PlaylistEditorDialog extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { activity = (MainActivity) getActivity(); - context = requireContext(); bind = DialogPlaylistEditorBinding.inflate(LayoutInflater.from(requireContext())); playlistEditorViewModel = new ViewModelProvider(requireActivity()).get(PlaylistEditorViewModel.class); @@ -64,6 +62,12 @@ public class PlaylistEditorDialog extends DialogFragment { initSongsView(); } + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + private void setParameterInfo() { if (getArguments() != null) { if (getArguments().getParcelable("song_object") != null) { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/RatingDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/RatingDialog.java index 3342e9f4..7d04c1c4 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/RatingDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/RatingDialog.java @@ -20,15 +20,10 @@ public class RatingDialog extends DialogFragment { private static final String TAG = "ServerSignupDialog"; private DialogRatingBinding bind; - private MainActivity activity; - private Context context; private RatingViewModel ratingViewModel; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - activity = (MainActivity) getActivity(); - context = requireContext(); - bind = DialogRatingBinding.inflate(LayoutInflater.from(requireContext())); ratingViewModel = new ViewModelProvider(requireActivity()).get(RatingViewModel.class); @@ -53,6 +48,12 @@ public class RatingDialog extends DialogFragment { setRating(); } + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + private void setElementInfo() { if (getArguments() != null) { if (getArguments().getParcelable("song_object") != null) { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/ServerSignupDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/ServerSignupDialog.java index 7ac8e04b..0aa200d2 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/ServerSignupDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/dialog/ServerSignupDialog.java @@ -72,6 +72,12 @@ public class ServerSignupDialog extends DialogFragment { setButtonAction(); } + @Override + public void onDestroyView() { + super.onDestroyView(); + bind = null; + } + private void setServerInfo() { if (getArguments() != null) { loginViewModel.setServerToEdit(getArguments().getParcelable("server_object"));