diff --git a/app/src/main/java/me/zhanghai/android/files/fileproperties/checksum/ChecksumInfoLiveData.kt b/app/src/main/java/me/zhanghai/android/files/fileproperties/checksum/ChecksumInfoLiveData.kt index 317d1fc78..9426db68d 100644 --- a/app/src/main/java/me/zhanghai/android/files/fileproperties/checksum/ChecksumInfoLiveData.kt +++ b/app/src/main/java/me/zhanghai/android/files/fileproperties/checksum/ChecksumInfoLiveData.kt @@ -15,16 +15,21 @@ import me.zhanghai.android.files.util.Stateful import me.zhanghai.android.files.util.Success import me.zhanghai.android.files.util.toHexString import me.zhanghai.android.files.util.valueCompat +import java.util.concurrent.ExecutorService +import java.util.concurrent.Future class ChecksumInfoLiveData(path: Path) : PathObserverLiveData>(path) { + private var future: Future? = null + init { loadValue() observe() } override fun loadValue() { + future?.cancel(true) value = Loading(value?.value) - AsyncTask.THREAD_POOL_EXECUTOR.execute { + future = (AsyncTask.THREAD_POOL_EXECUTOR as ExecutorService).submit { val value = try { val messageDigests = ChecksumInfo.Algorithm.entries.associateWith { it.createMessageDigest() } @@ -48,4 +53,10 @@ class ChecksumInfoLiveData(path: Path) : PathObserverLiveData