Patched memory leak
This commit is contained in:
@@ -21,7 +21,6 @@ package xyz.quaver.pupil.adapters
|
|||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
import android.content.ClipboardManager
|
import android.content.ClipboardManager
|
||||||
import android.content.Context
|
|
||||||
import android.graphics.drawable.Animatable
|
import android.graphics.drawable.Animatable
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
@@ -35,9 +34,14 @@ import com.daimajia.swipe.interfaces.SwipeAdapterInterface
|
|||||||
import com.facebook.drawee.backends.pipeline.Fresco
|
import com.facebook.drawee.backends.pipeline.Fresco
|
||||||
import com.facebook.drawee.controller.BaseControllerListener
|
import com.facebook.drawee.controller.BaseControllerListener
|
||||||
import com.facebook.imagepipeline.image.ImageInfo
|
import com.facebook.imagepipeline.image.ImageInfo
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.delay
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
import org.kodein.di.DIAware
|
import org.kodein.di.DIAware
|
||||||
import org.kodein.di.android.di
|
import org.kodein.di.android.di
|
||||||
|
import org.kodein.di.instance
|
||||||
|
import org.kodein.di.on
|
||||||
import xyz.quaver.pupil.R
|
import xyz.quaver.pupil.R
|
||||||
import xyz.quaver.pupil.databinding.SearchResultItemBinding
|
import xyz.quaver.pupil.databinding.SearchResultItemBinding
|
||||||
import xyz.quaver.pupil.sources.ItemInfo
|
import xyz.quaver.pupil.sources.ItemInfo
|
||||||
@@ -50,10 +54,11 @@ class SearchResultsAdapter(var results: LiveData<List<ItemInfo>>) : RecyclerSwip
|
|||||||
var onDownloadClickedHandler: ((source: String, itemI: String) -> Unit)? = null
|
var onDownloadClickedHandler: ((source: String, itemI: String) -> Unit)? = null
|
||||||
var onDeleteClickedHandler: ((source: String, itemID: String) -> Unit)? = null
|
var onDeleteClickedHandler: ((source: String, itemID: String) -> Unit)? = null
|
||||||
|
|
||||||
// TODO: migrate to viewBinding
|
inner class ViewHolder(private val binding: SearchResultItemBinding) : RecyclerView.ViewHolder(binding.root), DIAware {
|
||||||
val progressUpdateScope = CoroutineScope(Dispatchers.Main + Job())
|
override val di by di(binding.root.context)
|
||||||
|
|
||||||
|
private val clipboardManager: ClipboardManager by di.on(itemView.context).instance()
|
||||||
|
|
||||||
inner class ViewHolder(private val binding: SearchResultItemBinding) : RecyclerView.ViewHolder(binding.root) {
|
|
||||||
var source: String = ""
|
var source: String = ""
|
||||||
var itemID: String = ""
|
var itemID: String = ""
|
||||||
|
|
||||||
@@ -67,8 +72,7 @@ class SearchResultsAdapter(var results: LiveData<List<ItemInfo>>) : RecyclerSwip
|
|||||||
}
|
}
|
||||||
|
|
||||||
binding.idView.setOnClickListener {
|
binding.idView.setOnClickListener {
|
||||||
// TODO: MEMLEAK
|
clipboardManager.setPrimaryClip(
|
||||||
(itemView.context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager).setPrimaryClip(
|
|
||||||
ClipData.newPlainText("item_id", itemID)
|
ClipData.newPlainText("item_id", itemID)
|
||||||
)
|
)
|
||||||
Toast.makeText(itemView.context, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show()
|
Toast.makeText(itemView.context, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show()
|
||||||
@@ -90,12 +94,15 @@ class SearchResultsAdapter(var results: LiveData<List<ItemInfo>>) : RecyclerSwip
|
|||||||
|
|
||||||
binding.tagGroup.onClickListener = onChipClickedHandler
|
binding.tagGroup.onClickListener = onChipClickedHandler
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
CoroutineScope(Dispatchers.Main).launch {
|
CoroutineScope(Dispatchers.Main).launch {
|
||||||
while (true) {
|
while (true) {
|
||||||
updateProgress()
|
updateProgress()
|
||||||
delay(1000)
|
delay(1000)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
private val controllerListener = object: BaseControllerListener<ImageInfo>() {
|
private val controllerListener = object: BaseControllerListener<ImageInfo>() {
|
||||||
|
|||||||
@@ -166,8 +166,7 @@ class MainActivity :
|
|||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
|
binding.contents.recyclerview.adapter = null
|
||||||
(binding.contents.recyclerview.adapter as SearchResultsAdapter).progressUpdateScope.cancel()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalStdlibApi::class)
|
@OptIn(ExperimentalStdlibApi::class)
|
||||||
|
|||||||
Reference in New Issue
Block a user