قم بتصحيح أخطاء تطبيق Android الخاص بك استنادًا إلى علامات ANR في لوحة معلومات Crashlytics

يتم تشغيل أخطاء التطبيق لا يستجيب (ANR) عندما لا يستجيب مؤشر ترابط واجهة المستخدم الخاص بالتطبيق لأكثر من 5 ثوانٍ . يمكنك قراءة المزيد حول أخطاء ANR وتشخيص أخطاء ANR في وثائق Android .

بالإضافة إلى ذلك، يمكن أن يساعد Crashlytics في تحديد المواضيع الإشكالية المحددة. نقوم بتحليل أخطاء ANR، وبعد ذلك، في لوحة معلومات Crashlytics ، نقوم بوضع علامات على المواضيع القابلة للتطبيق لتقديم تلميحات حول كيفية تصحيح أخطاء ANR.

تشرح الأقسام التالية في هذه الصفحة ما تعنيه كل علامة ANR، وتعرض مثالاً لـ ANR مع تلك العلامة، وتوفر حلاً موصى به لتصحيح أخطاء ANR.

Triggered ANR

يتم وضع تعليق توضيحي على مؤشر الترابط الذي تم حظره لفترة طويلة جدًا وتسبب في حدوث ANR بهذا Triggered ANR .

يمكن أن يكون الموضوع الذي به مشكلة هو الموضوع الرئيسي للتطبيق، أو أي موضوع وجد أنه لا يستجيب. ومع ذلك، فإن الموضوع الموسوم باسم Triggered ANR قد يكون أو لا يكون السبب الفعلي لـ ANR. لتوفير رؤى لتصحيح أخطاء ANR وإصلاحها، تضع Crashlytics أيضًا علامات على أي سلاسل رسائل أخرى متضمنة في ANR. في الأقسام التالية من هذه الصفحة، تعرف على العلامات الأخرى التي يمكن تطبيقها على سلسلة رسائل.

Deadlocked

يتم شرح أي سلاسل رسائل تم العثور عليها متورطة في حالة توقف تام أدت إلى ANR بهذا علامة طريق Deadlocked .

يحدث حالة توقف تام عندما يدخل مؤشر الترابط في حالة انتظار بسبب احتجاز المورد المطلوب بواسطة مؤشر ترابط آخر، والذي ينتظر أيضًا المورد الذي يحتفظ به مؤشر الترابط الأول. إذا كان الموضوع الرئيسي للتطبيق في هذه الحالة، فمن المحتمل أن تحدث أخطاء ANR.

توصية

انظر إلى الخيوط المتورطة في حالة الجمود وتحقق من الموارد/الأقفال التي حصلت عليها تلك الخيوط. ارجع إلى خوارزميات منع Deadlock و Deadlock للحصول على الحلول الممكنة.

IO Root blocking

أي مؤشر ترابط كان ينفذ عمليات الإدخال/الإخراج البطيئة وقام بحظر ملف تم وضع تعليق توضيحي على مؤشر Triggered ANR باستخدام علامة IO Root blocking . إذا لا يتم حظر مؤشر ترابط Triggered ANR تشغيله بواسطة سلاسل رسائل أخرى، ثم يعد مؤشر IO Root blocking أيضًا موضوع Root blocking .

توصية

بشكل عام، لا ينبغي لتطبيقك تنفيذ عمليات إدخال/إخراج باهظة الثمن على سلسلة المحادثات الرئيسية. في حالة وجود الخيط الرئيسي IO Root blocking ، يمكنك أيضًا استخدام الوضع الصارم لتحديد أي عمليات إدخال/إخراج غير مقصودة تحدث على مؤشر الترابط الرئيسي.

Root blocking

أي موضوع قام بحظر الموضوع الذي تم وضع علامة عليه باسم يتم شرح Triggered ANR باستخدام علامة Root blocking . إذا تم وضع علامة على موضوع على حد سواء Root blocking و Triggered ANR ، ثم لا توجد سلاسل رسائل أخرى تحظر هذا الخيط.

لو اي كانت سلاسل Triggered ANR تنتظر (ربما بشكل عابر) لسلاسل رسائل أخرى، فهي كذلك Root blocking . قد تكون هناك أسباب مختلفة تجعل الخيط هو السبب الجذري لـ ANR.

توصية

تقليل العمل المكثف لوحدة المعالجة المركزية في الموضوع الرئيسي. استخدم مؤشرات الترابط العاملة أو الخلفية لأداء المهام المكثفة لوحدة المعالجة المركزية.

تقليل العمل المكثف للإدخال/الإخراج، مثل التحميل من قاعدة البيانات، على الموضوع الرئيسي.

Unknown root cause

تم وضع علامة على موضوع مع علامة Unknown root cause إذا كان الخيط هو الذي أدى إلى تشغيل ANR ولكنه كان خاملاً في العملية عند حدوث ANR. ليس لدى Crashlytics معلومات كافية لتحديد السبب الجذري. لا يوجد سبب واضح لحدوث ANR هذا.

توصية

اتبع النصائح العامة حول كيفية منع حالات ANR. على سبيل المثال، حدد الأماكن في التعليمات البرمجية الخاصة بك حيث يمكن أن يكون الموضوع الرئيسي للتطبيق مشغولاً لأكثر من 5 ثوانٍ .