Merge "Use a SupervisorJob in BubbleDataRepository" into udc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
4ed855afcd
@@ -33,6 +33,7 @@ import com.android.wm.shell.common.ShellExecutor
|
|||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
|
import kotlinx.coroutines.SupervisorJob
|
||||||
import kotlinx.coroutines.cancelAndJoin
|
import kotlinx.coroutines.cancelAndJoin
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.yield
|
import kotlinx.coroutines.yield
|
||||||
@@ -45,7 +46,7 @@ internal class BubbleDataRepository(
|
|||||||
private val volatileRepository = BubbleVolatileRepository(launcherApps)
|
private val volatileRepository = BubbleVolatileRepository(launcherApps)
|
||||||
private val persistentRepository = BubblePersistentRepository(context)
|
private val persistentRepository = BubblePersistentRepository(context)
|
||||||
|
|
||||||
private val ioScope = CoroutineScope(Dispatchers.IO)
|
private val coroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob())
|
||||||
private var job: Job? = null
|
private var job: Job? = null
|
||||||
|
|
||||||
// For use in Bubble construction.
|
// For use in Bubble construction.
|
||||||
@@ -131,7 +132,7 @@ internal class BubbleDataRepository(
|
|||||||
*/
|
*/
|
||||||
private fun persistToDisk() {
|
private fun persistToDisk() {
|
||||||
val prev = job
|
val prev = job
|
||||||
job = ioScope.launch {
|
job = coroutineScope.launch {
|
||||||
// if there was an ongoing disk I/O operation, they can be cancelled
|
// if there was an ongoing disk I/O operation, they can be cancelled
|
||||||
prev?.cancelAndJoin()
|
prev?.cancelAndJoin()
|
||||||
// check for cancellation before disk I/O
|
// check for cancellation before disk I/O
|
||||||
@@ -148,7 +149,7 @@ internal class BubbleDataRepository(
|
|||||||
* bubbles.
|
* bubbles.
|
||||||
*/
|
*/
|
||||||
@SuppressLint("WrongConstant")
|
@SuppressLint("WrongConstant")
|
||||||
fun loadBubbles(userId: Int, cb: (List<Bubble>) -> Unit) = ioScope.launch {
|
fun loadBubbles(userId: Int, cb: (List<Bubble>) -> Unit) = coroutineScope.launch {
|
||||||
/**
|
/**
|
||||||
* Load BubbleEntity from disk.
|
* Load BubbleEntity from disk.
|
||||||
* e.g.
|
* e.g.
|
||||||
|
|||||||
Reference in New Issue
Block a user