1. مبتدئ

    ما هي المكونات الثلاثة الأساسية لمكتبة Room وما دور كل منها؟

    Entity لتمثيل جداول قاعدة البيانات وأعمدتها، و DAO لتعريف عمليات الاستعلام والإدخال، و RoomDatabase كنقطة الوصول المركزية للاتصال.

    اقرأ الشرح الكامل
  2. مبتدئ

    لماذا ينصح بالانتقال من SharedPreferences إلى Jetpack DataStore؟

    لأن DataStore آمن تمامًا للـ Threads، ويعتمد على Kotlin Coroutines و Flow، ويتعامل مع الأخطاء بأمان دون حجب الـ UI أو التسبب في أخطاء ANR.

    اقرأ الشرح الكامل
  3. متوسط

    كيف تخزن أنواع بيانات مخصصة (كالتاريخ أو القوائم) في Room باستخدام TypeConverters؟

    بتعريف دوال تحمل وسم @TypeConverter لتحويل النوع المخصص إلى نوع بدائي تفهمه SQLite (كالنص أو الرقم) وعكسه عند القراءة.

    اقرأ الشرح الكامل
  4. متوسط

    كيف تتعامل مع ترقية مخطط قاعدة البيانات (Room Database Migrations) دون فقد بيانات المستخدم؟

    بزيادة رقم الـ version وكتابة كائن Migration ينفذ أوامر ALTER TABLE المناسبة، أو الاعتماد على AutoMigration إذا كان التعديل بسيطًا.

    اقرأ الشرح الكامل
  5. متوسط

    كيف تصمم العلاقات بين الجداول (One-to-Many و Many-to-Many) في Room؟

    باستخدام كائنات البيانات الوسيطة مع وسمي @Embedded و @Relation لتحديد المفتاح الأجنبي والمفتاح الرئيسي دون تعقيد الاستعلامات يدويًا.

    اقرأ الشرح الكامل
  6. متقدم

    ما الفرق بين Preferences DataStore و Proto DataStore ومتى تختار Proto DataStore؟

    Preferences DataStore يخزن أزواج مفتاح-قيمة بدون Schema محددة مسبقًا؛ بينما Proto DataStore يخزن كائنات مخصصة بأنواع بيانات صارمة وآمنة باستخدام Protocol Buffers.

    اقرأ الشرح الكامل