Могу ли я использовать withContext() и withTransaction вместе в Kotlin/Android?Android

Форум для тех, кто программирует под Android
Anonymous
Могу ли я использовать withContext() и withTransaction вместе в Kotlin/Android?

Сообщение Anonymous »

Ситуация такова, что мне приходится объединить сетевые вызовы и выполнение базы данных в одном методе, как в этом псевдокоде:

Код: Выделить всё

do {
fetchPagedDataFromNetwork
insertDataIntoDatabase
} while not last page
Конечно, это должно выполняться в транзакции и (насколько я понял) использовать контекст выполнения Dispatchers.IO.
Обратите внимание, что это будет выполняться в приостанавливаемой сопрограмме, поэтому, насколько я понимаю проблему, ни @Transactional, ни runInTransaction() использовать нельзя.
Могло бы это нужно сделать, и какая последовательность предпочтительнее?
Псевдокод (A), транзакционный блок в контексте

Код: Выделить всё

override suspend fun doWork(): Result {
withContext(Dispatchers.IO) {
try {
database.withTransaction {
// get data from network and and insert paged data into database
}
}
finally {...}
}
}
или так лучше?
Псевдокод (B), контекст внутри транзакционного блока

Код: Выделить всё

override suspend fun doWork(): Result {
try {
database.withTransaction {
withContext(Dispatchers.IO) {
// get data from network and and insert paged data into database
}
}
}
finally {...}
}
Спасибо за разъяснения от новичка в Android/Kotlin ;-)

Подробнее здесь: https://stackoverflow.com/questions/790 ... n-together

Вернуться в «Android»