Avatar ·

خطأ MutableLiveData setValue في الخلفية من coroutine: كيفية الإصلاح؟

مرحبًا! بدأت مؤخرًا في تعلم Kotlin وتطوير Android، وواجهت مشكلة عند استخدام MutableLiveData مع coroutines. لدي ViewModel تقوم بتحميل البيانات من الشبكة باستخدام coroutine. عندما تصل البيانات، أحاول تحديث LiveData ولكن يحدث تعطل مع الخطأ: ``` Cannot invoke setValue on a background thread ``` هذا هو الكود الخاص بي: ```kotlin class MyViewModel : ViewModel() { private val _data = MutableLiveData>() val data: LiveData> = _data fun loadData() { viewModelScope.launch { val result = fetchDataFromApi() // دالة suspend _data.setValue(result) // يحدث الخطأ هنا } } private suspend fun fetchDataFromApi(): List { delay(2000) // محاكاة التحميل return listOf("item1", "item2", "item3") } } ``` قرأت أن MutableLiveData.setValue() يمكن استدعاؤه فقط من الخيط الرئيسي. لكن coroutine تم تشغيلها عبر