Могу ли я использовать 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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