Minor fragment/coil fixes

Update LoadingFragment path to prevent a crash on startup. Also switch how CoilUtils handles ArtistImageFetcher so that it doesnt cause a memory leak.
This commit is contained in:
OxygenCobalt 2020-09-07 16:57:40 -06:00
parent 031815d746
commit 4b50b80af4
6 changed files with 16 additions and 17 deletions

View file

@ -18,9 +18,9 @@ import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import org.oxycblt.auxio.databinding.ActivityMainBinding import org.oxycblt.auxio.databinding.ActivityMainBinding
import org.oxycblt.auxio.library.LibraryFragment import org.oxycblt.auxio.library.LibraryFragment
import org.oxycblt.auxio.library.SongsFragment
import org.oxycblt.auxio.music.MusicViewModel import org.oxycblt.auxio.music.MusicViewModel
import org.oxycblt.auxio.music.processing.MusicLoaderResponse import org.oxycblt.auxio.music.processing.MusicLoaderResponse
import org.oxycblt.auxio.library.SongsFragment
import org.oxycblt.auxio.theme.accent import org.oxycblt.auxio.theme.accent
import org.oxycblt.auxio.theme.getInactiveAlpha import org.oxycblt.auxio.theme.getInactiveAlpha
import org.oxycblt.auxio.theme.getTransparentAccent import org.oxycblt.auxio.theme.getTransparentAccent
@ -58,7 +58,8 @@ class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView<ActivityMainBinding>(
binding = DataBindingUtil.setContentView(
this, R.layout.activity_main this, R.layout.activity_main
) )
@ -105,16 +106,17 @@ class MainActivity : AppCompatActivity() {
) )
musicModel.response.observe( musicModel.response.observe(
this, { this,
{
// When the load is completed successfully, remove the loadingFragment view
// and replace it with the ViewPager, now that its loaded.
if (it == MusicLoaderResponse.DONE) { if (it == MusicLoaderResponse.DONE) {
binding.loadingFragment.visibility = View.GONE // binding.loadingFragment.visibility = View.GONE
binding.viewPager.visibility = View.VISIBLE binding.viewPager.visibility = View.VISIBLE
} }
} }
) )
musicModel.go()
Log.d(this::class.simpleName, "Activity Created.") Log.d(this::class.simpleName, "Activity Created.")
} }

View file

@ -11,8 +11,6 @@ import org.oxycblt.auxio.music.models.Album
import org.oxycblt.auxio.music.models.Artist import org.oxycblt.auxio.music.models.Artist
import org.oxycblt.auxio.music.models.Song import org.oxycblt.auxio.music.models.Song
private var artistImageFetcher: ArtistImageFetcher? = null
// Get the cover art for a song or album // Get the cover art for a song or album
@BindingAdapter("coverArt") @BindingAdapter("coverArt")
fun ImageView.getCoverArt(song: Song) { fun ImageView.getCoverArt(song: Song) {
@ -44,14 +42,11 @@ fun ImageView.getArtistImage(artist: Artist) {
uris.add(artist.albums[i].coverUri) uris.add(artist.albums[i].coverUri)
} }
// Initialize the fetcher if it hasn't been already. val fetcher = ArtistImageFetcher(context)
if (artistImageFetcher == null) {
artistImageFetcher = ArtistImageFetcher(context)
}
getDefaultRequest(context, this) getDefaultRequest(context, this)
.data(uris) .data(uris)
.fetcher(artistImageFetcher!!) .fetcher(fetcher)
.error(R.drawable.ic_artist) .error(R.drawable.ic_artist)
.build() .build()
} else { } else {

View file

@ -8,7 +8,6 @@ import android.view.ViewGroup
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.lifecycle.ViewModelProvider
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.FragmentLibraryBinding import org.oxycblt.auxio.databinding.FragmentLibraryBinding
import org.oxycblt.auxio.music.MusicViewModel import org.oxycblt.auxio.music.MusicViewModel

View file

@ -8,7 +8,6 @@ import android.view.ViewGroup
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.lifecycle.ViewModelProvider
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.FragmentSongsBinding import org.oxycblt.auxio.databinding.FragmentSongsBinding
import org.oxycblt.auxio.music.MusicViewModel import org.oxycblt.auxio.music.MusicViewModel

View file

@ -6,7 +6,11 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import kotlinx.coroutines.* import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.oxycblt.auxio.R import org.oxycblt.auxio.R
import org.oxycblt.auxio.music.models.Album import org.oxycblt.auxio.music.models.Album
import org.oxycblt.auxio.music.models.Artist import org.oxycblt.auxio.music.models.Artist

View file

@ -27,7 +27,7 @@
<androidx.fragment.app.FragmentContainerView <androidx.fragment.app.FragmentContainerView
android:id="@+id/loading_fragment" android:id="@+id/loading_fragment"
android:name="org.oxycblt.auxio.loading.LoadingFragment" android:name="org.oxycblt.auxio.library.LoadingFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/tabs" app:layout_constraintBottom_toTopOf="@+id/tabs"