ينشر بنجاح Runnable يحصل فقط عندما يتم إبطال الوالد

أقوم أحيانًا بتشغيل السيناريو التالي:

  • أتصل بـ View.post (Runnable r) ويعرض true
  • عند الاتصال android.os.Looper.myLooper (). تفريغ (...) ، يبدو أن runnable لا توجد في messageQueue
  • بعد إلغاء الاتصال على المخطط الرئيسي (على سبيل المثال بعد 20 ثانية) ، يتم تنفيذ Runnable

يحدث هذا فقط من وقت لآخر ، وهو يحدث على أجهزة متعددة وعلى إصدارات متعددة من Android.

تبدو المشكلة مشابهة لـ يتم نشر Runnable بنجاح ولكن لا تعمل و < a href = "https://stackoverflow.com/questions/4327783/android-button-within-listview-not-receiving-onclick-events"> Android: زر ضمن ListView لا يتلقى أحداث onClick

هل يمكن لأي شخص أن يشرح تحت أي ظروف يتم نشر Runnable لكن لا يتم تنفيذه (بعد)؟ ولماذا يتم تنفيذه بعد إبطال (الأصل).

ملاحظة: نشر Runnable باستخدام runOnUiThread يعمل بشكل جيد ولكن لا يمكنني استخدام هذا: مشكلتي الحقيقية هي أنه في بعض الأحيان لا يتم استدعاء OnClickListener؛ تم تعقب هذا إلى استدعاء للنشر (performClick) في View.onTouchEvent.

أفترض أن التسلسل الهرمي الخاص بي هو في حالة غريبة لكنني جاهل.
يتم إنشاء "طرق العرض الخاصة بي" في التعليمات البرمجية وتتكون من

1
لاحظت أنه عندما لا يتم تنفيذ post() على الفور ، أن view.hasWindowFocus() == false. هل يساعد هذا في الإجابة عن أسئلتي؟
وأضاف المؤلف Marc Van Daele, مصدر

1 إجابة

The answer is given here ListView.hasWindowFocus==true but child views hasWindowFocus==false

ListView لا يحب محول وجهات النظر.

0
وأضاف
Android Sudan Community
Android Sudan Community
900 مشارك

كل اقتراحاتكم تتم مشاركتها هنا رابط القناة لتنزيل البرامج والالعاب من هنا @android_sudan تنبيه : القروب غير مختص إطلاقا بي الانترنت المجاني مثل ملفات الحاقن وماشابه يمنع منعا باتا نشر اي ملفات او برامج او اي شيء يتعلق بالانترنت المجان