1. مبتدئ

    ما هي الـ Coroutines في Kotlin وكيف تختلف عن الـ Threads التقليدية لنظام التشغيل؟

    هي خيوط عمل خفيفة جدًا (Lightweight Threads) يديرها وقت تشغيل Kotlin في وضع المستخدم (User-space) بدلاً من أن يديرها نظام التشغيل مباشرة.

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

    كيف تعمل الـ Suspend Function في Kotlin تحت الغطاء (Under the hood)؟

    يحولها المترجم باستخدام نمط تمرير الاستمرار (Continuation-Passing Style - CPS) إلى آلة حالات (State Machine) تستقبل كائن Continuation كمعامل إضافي.

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

    ما الفرق بين الموزعات المختلفة (Dispatchers: Main, IO, Default, Unconfined) في أندرويد؟

    Main مخصص للواجهة والتفاعل، IO مخصص لعمليات الإدخال والإخراج والشبكة، Default مخصص للعمليات الحسابية المكثفة للمعالج، و Unconfined يبدأ على الخيط الحالي دون تقييد.

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

    ما الفرق بين باني الكوروتين launch وباني async ومتى نستخدم كل منهما؟

    launch يطلق كوروتين بنمط 'أطلق وانسَ' (Fire-and-forget) ويعيد كائن Job؛ بينما async يطلق مهمة تعيد نتيجة متوقعة كـ Deferred<T> وتُسترجع عبر await().

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

    ما هو مبدأ التزامن الهيكلي (Structured Concurrency) في Kotlin Coroutines؟

    هو مبدأ تنظيمي يضمن عدم تسريب أي كوروتين، بحيث تُرتب الكوروتينات في تسلسل هرمي كأبناء لأب لا ينتهي إلا بانتهاء جميع أبنائه، وإذا أُلغي الأب يُلغى كل أبنائه تلقائيًا.

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

    لماذا يقال إن إلغاء الـ Coroutine عملية تعاونية (Cooperative Cancellation) وكيف تتأكد من استجابتها؟

    لأن الكوروتين لا يمكن إيقافها قسرًا من الخارج؛ بل يجب أن يتحقق الكود دوريًا من حالة الإلغاء (isActive) أو يستدعي دوال تعليق قياسية تفحص الإلغاء.

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

    كيف تتم معالجة الأخطاء غير الملتقطة في الكوروتين باستخدام CoroutineExceptionHandler؟

    يعمل كصمام أمان أخير (Global Catch) لالتقاط الاستثناءات غير المعالجة في الـ Root Coroutine المطلقة بواسطة launch لمنع كراش التطبيق.

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

    ما الفرق الجوهري بين Job عادية و SupervisorJob في انتشار الاستثناءات؟

    في Job العادية، فشل أي ابن يؤدي لإلغاء الأب وجميع الأبناء الآخرين فورًا؛ بينما في SupervisorJob، يتم عزل الفشل ولا يؤثر تعطل ابن على باقي الأبناء.

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

    ما الفرق المعماري بين التدفق البارد (Cold Flow) والتدفق الساخن (Hot Flow) في Kotlin؟

    التدفق البارد (Flow) لا ينفذ كوده إلا عند وجود مستهلك (Collector)، بينما التدفق الساخن (StateFlow/SharedFlow) يبث البيانات دائمًا في الذاكرة حتى لو لم يوجد أي مستمع.

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

    متى تستخدم Channel ومتى تفضل استخدام Flow في معمارية تطبيقات أندرويد؟

    تُستخدم Channel للاتصال من نقطة لنقطة وتوزيع المهام (Queue) حيث يستهلك القيمة مستقبل واحد فقط؛ بينما يُستخدم Flow لبث البيانات المتجددة (Streams) لمستمعين متعددين.

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