[Android] Use withContext to wait for an async operation
Geoffrey Métais
git at videolan.org
Wed Mar 7 15:22:49 CET 2018
vlc-android | branch: 3.0.x | Geoffrey Métais <geoffrey.metais at gmail.com> | Tue Feb 27 14:12:43 2018 +0100| [7dedf17a6b3712adbbe63bd933a89e615c2fc3a4] | committer: Geoffrey Métais
Use withContext to wait for an async operation
(cherry picked from commit 2787624027b0c5a482bfa3711ed34fb002c2d833)
> https://code.videolan.org/videolan/vlc-android/commit/7dedf17a6b3712adbbe63bd933a89e615c2fc3a4
---
vlc-android/src/org/videolan/vlc/gui/DiffUtilAdapter.kt | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/vlc-android/src/org/videolan/vlc/gui/DiffUtilAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/DiffUtilAdapter.kt
index 5e0011676..4cba6d0a3 100644
--- a/vlc-android/src/org/videolan/vlc/gui/DiffUtilAdapter.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/DiffUtilAdapter.kt
@@ -9,6 +9,7 @@ import kotlinx.coroutines.experimental.channels.Channel
import kotlinx.coroutines.experimental.channels.actor
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.experimental.newSingleThreadContext
+import kotlinx.coroutines.experimental.withContext
import java.util.*
abstract class DiffUtilAdapter<D, VH : RecyclerView.ViewHolder> : RecyclerView.Adapter<VH>() {
@@ -32,11 +33,11 @@ abstract class DiffUtilAdapter<D, VH : RecyclerView.ViewHolder> : RecyclerView.A
private suspend fun internalUpdate(list: List<D>) {
val finalList = prepareList(list)
val result = DiffUtil.calculateDiff(diffCallback.apply { update(dataset, finalList) }, detectMoves())
- launch(UI) {
+ withContext(UI) {
dataset = finalList
result.dispatchUpdatesTo(this at DiffUtilAdapter)
onUpdateFinished()
- }.join()
+ }
}
protected open fun prepareList(list: List<D>) : List<D> = ArrayList(list)
More information about the Android
mailing list