برنامه اندروید خود را بر اساس برچسب های ANR در داشبورد Crashlytics اشکال زدایی کنید
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
خطاهای Application Not Responding (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 وجود دارد.
به موضوعات درگیر در بن بست نگاه کنید و منابع/قفل های به دست آمده توسط آن رشته ها را بررسی کنید. برای راه حل های ممکن به الگوریتم های پیشگیریاز بن بست و بن بست مراجعه کنید.
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 است.
کار فشرده CPU را در موضوع اصلی به حداقل برسانید. برای انجام کارهای فشرده CPU از نخ های کارگر یا پس زمینه استفاده کنید.
کار فشرده I/O را، مانند بارگیری از پایگاه داده، روی رشته اصلی به حداقل برسانید.
Unknown root cause
یک موضوع با برچسب برچسب گذاری شده است تگ Unknown root cause در صورتی که رشته ای باشد که ANR را راه اندازی کرده است اما در هنگام وقوع ANR بیکار بوده است. Crashlytics اطلاعات کافی برای تعیین علت اصلی ندارد. هیچ دلیل واضحی وجود ندارد که چرا این ANR رخ داده است.
توصیه های کلی در مورد نحوه جلوگیری از ANR را دنبال کنید. برای مثال، مکانهایی را در کد خود شناسایی کنید که رشته اصلی برنامه میتواند بیش از ۵ ثانیه در آنها مشغول باشد.
تاریخ آخرین بهروزرسانی 2025-10-07 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-10-07 بهوقت ساعت هماهنگ جهانی."],[],[]]