Android Room: كيفية إصلاح خطأ "Cannot access database on the main thread" عند استعلام SELECT بسيط؟
مرحبًا بالجميع! أنا مبتدئ في تطوير Android باستخدام Kotlin وأستخدم Room لقاعدة البيانات المحلية. لدي كيان User بسيط و DAO مع طريقة getAllUsers() التي ترجع قائمة بجميع المستخدمين. أستدعي هذه الطريقة من Activity لعرض البيانات في RecyclerView. لكن التطبيق يتعطل مع الخطأ التالي:
java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.
إليك الكود الخاص بي:
// Entity
@Entity(tableName = "users")
data class User(
@PrimaryKey val id: Int,
val name: String,
val email: String
)
// DAO
@Dao
interface UserDao {
@Query("SELECT * FROM users")
suspend fun getAllUsers(): List<User>
}
// Database
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
// Activity
class MainActivity : AppCompatActivity() {