diff --git a/app/src/main/java/org/oxycblt/auxio/library/LibraryViewModel.kt b/app/src/main/java/org/oxycblt/auxio/library/LibraryViewModel.kt index 531fedb7e..6cac73585 100644 --- a/app/src/main/java/org/oxycblt/auxio/library/LibraryViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/library/LibraryViewModel.kt @@ -89,7 +89,6 @@ class LibraryViewModel : ViewModel(), SettingsManager.Callback { /** * Shortcut function for updating the library data with the current [SortMode]/[DisplayMode] */ - @Suppress("UNCHECKED_CAST") private fun updateLibraryData() { mLibraryData.value = when (mDisplayMode) { DisplayMode.SHOW_GENRES -> { diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt index 7eb7d61e3..f9be11cf2 100644 --- a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt @@ -15,6 +15,7 @@ import androidx.recyclerview.widget.GridLayoutManager import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.FragmentSearchBinding import org.oxycblt.auxio.logD +import org.oxycblt.auxio.logE import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.BaseModel @@ -30,6 +31,9 @@ import org.oxycblt.auxio.ui.isLandscape import org.oxycblt.auxio.ui.requireCompatActivity import org.oxycblt.auxio.ui.toColor +// TODO: Fix TextView memory leak +// TODO: Add Filtering +// TODO: Add "No Results" marker class SearchFragment : Fragment() { // SearchViewModel only scoped to this Fragment private val searchModel: SearchViewModel by viewModels() @@ -80,6 +84,7 @@ class SearchFragment : Fragment() { } // --- VIEWMODEL SETUP --- + searchModel.searchResults.observe(viewLifecycleOwner) { searchAdapter.submitList(it) { binding.searchRecycler.scrollToPosition(0) @@ -97,9 +102,21 @@ class SearchFragment : Fragment() { } override fun onDestroyView() { - requireView().rootView.clearFocus() - super.onDestroyView() + + try { + // Use reflection to fix a memory leak in the fragment source code that occurs + // from leaving an EditText focused when exiting the view. + // I cant believe I have to do this. + Fragment::class.java.getDeclaredMethod("setFocusedView", View::class.java).apply { + isAccessible = true + invoke(this@SearchFragment, null) + } + } catch (e: Exception) { + logE("Hacky reflection leak fix failed. Oh well.") + + e.printStackTrace() + } } override fun onResume() { diff --git a/app/src/main/res/layout/fragment_library.xml b/app/src/main/res/layout/fragment_library.xml index b089b07b2..0898fc729 100644 --- a/app/src/main/res/layout/fragment_library.xml +++ b/app/src/main/res/layout/fragment_library.xml @@ -26,5 +26,6 @@ android:layout_weight="1" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" tools:listitem="@layout/item_artist" /> + \ No newline at end of file