Объединение runBlocking
и withContext
, кажется, отправляет сообщение Note: end time exceeds epoch:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
runBlocking {
withContext(DefaultDispatcher) {
null
}
}
}
}
Я использую много сопрограмм, как это, и logcat спам, есть идеи, чтобы избежать этого?Другой способ сделать это, например:
var projects: List<ProjectEntity>? = runBlocking {
withContext(DefaultDispatcher) {
//Get the ProjectEntity list
}
}
projects?.let {
onResult(projects)
}
РЕДАКТИРОВАТЬ
Я пробую что-то на основе ваших комментариев (спасибо), но не могу получитьрезультат, подобный моему примеру выше:
Log.d("Coroutines", "getMostRecent start")
var localeProject: ProjectEntity? = null
launch {
withContext(CommonPool) {
Log.d("Coroutines", "getRecentLocaleProject")
localeProject = getRecentLocaleProject()
}
}
Log.d("Coroutines", "check localeProject")
if (localeProject != null) {
//Show UI
}
В Logcat:
D/Coroutines: getMostRecent start
D/Coroutines: check localeProject
D/Coroutines: getRecentLocaleProject
Я хочу разделить асинхронные и синхронизирующие вещи, нет такого способа?Я действительно хочу по возможности избегать всех обратных вызовов в моих репозиториях.