Android Application Not Responding: ANR
گاهی برنامه ما هنگ میکنه و اندروید ی پیام نشون میده ک میگه صبر میکنی یا برنامه رو ببندم !!!
به این پیام میگن ANR و یعنی برنامه دیگه پاسخگو نیست و در دو زمان این پیام رو میبینیم:
- زمانی که برنامه ما توی foreground هستش و به مدت ۵ ثانیه هیچ واکنشی به رخداد ورودی و BroadcastReceiver ها نشون نمیده
- زمان که برنامه ما توی foreground نیست ولی ما ی BroadcastReceiver داریم ک برای ی تایم زیادی داره فعالیت میکنه
چ زمان هایی ممکنه این خطا رخ بده:
- زمانی ک ی کار I/O بیس داریم تو ترد اصلی انجام میدیم برنامه کند بشه
- ی محاسبه سنگین توی ترد اصلی داشته باشیم
- ترد اصلی رو بایند کرده باشیم ب ی چیز دیگه ک اون خیلی طول بکشه
ی کتابخونه هم ب نام StrictMode وجود داره کمک میکنه بهتر این مشکلات رو پیدا و حل کنیم.
برای استفاده سریع از StrictMode میشه کد زیر رو توی کلاس Application برنامه اضافه کنیم:
public void onCreate() {
if (DEVELOPER_MODE) {
StrictMode.setThreadPolicy(
new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork() // or .detectAll() for all detectable problems
.penaltyLog()
.build());
StrictMode.setVmPolicy(
new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.detectLeakedClosableObjects()
.penaltyLog()
.penaltyDeath()
.build());
}
super.onCreate();
}
+ نوشته شده در شنبه ۱۲ تیر ۱۴۰۰ ساعت 7:33 توسط No One