Avatar ·

Что использовать вместо устаревшего Handler() в Kotlin/Android?

السلام عليكم! أنا مبتدئ في تطوير Android باستخدام Kotlin، واجهت مشكلة. كنت سابقًا أستخدم `Handler()` لتنفيذ المهام بتأخير أو للتبديل إلى الخيط الرئيسي من الخلفية. مثلاً، كان لدي هذا الكود: ```kotlin val handler = Handler() handler.postDelayed({ // بعض الكود بعد ثانيتين }, 2000) ``` لكنني قمت مؤخرًا بتحديث SDK، والآن IDE يضع خطًا أحمر تحت `Handler()` — يكتب أن المُنشئ قديم (deprecated). في التوثيق يُقال استخدام `Looper.getMainLooper()`، لكنني لا أفهم تمامًا كيفية القيام بذلك بشكل صحيح. أيضًا سمعت عن `HandlerThread` و `Coroutines`، لكنني لا أعرف أيهما أفضل للمهام البسيطة مثل التأخير قبل تحديث واجهة المستخدم. هل يمكنكم شرح كيفية كتابة الكود الذي كان يُستخدم سابقًا عبر `Handler()` بشكل صحيح الآن؟ يُفضل مع أمثلة على Kotlin تكون واضحة للمبتدئ. شكرًا مقدمًا! <<>>

لماذا أصبح Handler() قديمًا وما الذي يجب استخدامه بدلاً منه؟

في Android 11 (API 30) أصبح المُنشئ Handler() مهملاً (deprecated) لأسباب تتعلق بالسلامة والوضوح. الحل الموصى به هو تمرير Looper.getMainLooper() إلى المُنشئ أو استخدام Coroutines.