رسیدگی به مشکلات رایج عملکرد، رسیدگی به مشکلات رایج عملکرد

ارائه یک تجربه کاربری روان، پایدار و با مصرف باتری بهینه، نیازمند شناسایی و رفع گلوگاه‌های رایج عملکرد در حوزه‌های پایداری، رندر رابط کاربری، مصرف حافظه، کارهای پس‌زمینه، تأخیر در شروع به کار و بهینه‌سازی ساخت است.

راهنماهای این بخش، رفتار اساسی پلتفرم اندروید را برای هر نوع مشکل توضیح می‌دهند و نحوه تشخیص، پروفایل‌بندی و رفع آنها را با استفاده از ابزارهایی مانند Android Studio Profiler، Perfetto، Logcat و ApplicationExitInfo بررسی می‌کنند.

پایداری

  • ANRها : تشخیص و رفع خطاهای عدم پاسخگویی برنامه (ANR) ناشی از مسدود شدن نخ‌های رابط کاربری، ورودی/خروجی نخ اصلی، تداخل قفل یا گیرنده‌های پخش کند.
  • خرابی‌ها : خواندن ردپاهای پشته، بررسی خروجی Logcat و جلوگیری از استثنائات مدیریت نشده و سیگنال‌های بومی.

رندرینگ و راه‌اندازی

  • رندرینگ کند : فریم‌های رابط کاربری از دست رفته یا هنگ کرده ( >16ms و >700ms ) که ناشی از طرح‌بندی‌های پرهزینه، bind passها یا توقف‌های thread اصلی هستند را شناسایی و رفع کنید.
  • جلسات کند (فقط بازی‌ها) : سرعت فریم را با SurfaceFlinger اندازه‌گیری کنید و نرخ فریم بازی را با استفاده از Android Frame Pacing (Swappy)، Vulkan و Android Dynamic Performance Framework (ADPF) بهینه کنید.
  • زمان شروع برنامه : درک اجزای داخلی راه‌اندازی سرد، گرم و داغ، اندازه‌گیری زمان نمایش اولیه (TTID) و زمان نمایش کامل (TTFD) و بهینه‌سازی کار راه‌اندازی.

مدیریت حافظه

  • قاتلان حافظه کم (LMK) : درک کنید که چگونه سرویس قاتل حافظه کم اندروید ( lmkd ) فرآیندها را از طریق oom_adj_score و profile memory footprint در اندروید استودیو، یونیتی و موتور آنریل اولویت‌بندی می‌کند.
  • میزان استفاده از حافظه (RSS ناشناس + swap) : میزان حافظه اشغال شده توسط برنامه (RSS) و swap را در حالت‌های پیش‌زمینه، سرویس و پس‌زمینه اندازه‌گیری و کاهش دهید.
  • میزان استفاده از حافظه بیت‌مپ : تشخیص تخصیص‌های بیت‌مپ بیش از حد بزرگ یا نشت‌شده و آزادسازی بافرهای گرافیکی هنگام انتقال اجزای رابط کاربری به پس‌زمینه.

باتری و کار پس زمینه

مجوزها و بهینه‌سازی ساخت

  • رد مجوزها : مجوزهای زمان اجرا را در متن درخواست کنید و منطق مجوز را به روشنی برای کاربران توضیح دهید.
  • بهینه‌سازی کد DEX : پیکربندی قوانین کوچک‌سازی، مبهم‌سازی و بهینه‌سازی R8 برای کاهش اندازه DEX و بهبود عملکرد زمان اجرا.
،

ارائه یک تجربه کاربری روان، پایدار و با مصرف باتری بهینه، نیازمند شناسایی و رفع گلوگاه‌های رایج عملکرد در حوزه‌های پایداری، رندر رابط کاربری، مصرف حافظه، کارهای پس‌زمینه، تأخیر در شروع به کار و بهینه‌سازی ساخت است.

راهنماهای این بخش، رفتار اساسی پلتفرم اندروید را برای هر نوع مشکل توضیح می‌دهند و نحوه تشخیص، پروفایل‌بندی و رفع آنها را با استفاده از ابزارهایی مانند Android Studio Profiler، Perfetto، Logcat و ApplicationExitInfo بررسی می‌کنند.

پایداری

  • ANRها : تشخیص و رفع خطاهای عدم پاسخگویی برنامه (ANR) ناشی از مسدود شدن نخ‌های رابط کاربری، ورودی/خروجی نخ اصلی، تداخل قفل یا گیرنده‌های پخش کند.
  • خرابی‌ها : خواندن ردپاهای پشته، بررسی خروجی Logcat و جلوگیری از استثنائات مدیریت نشده و سیگنال‌های بومی.

رندرینگ و راه‌اندازی

  • رندرینگ کند : فریم‌های رابط کاربری از دست رفته یا هنگ کرده ( >16ms و >700ms ) که ناشی از طرح‌بندی‌های پرهزینه، bind passها یا توقف‌های thread اصلی هستند را شناسایی و رفع کنید.
  • جلسات کند (فقط بازی‌ها) : سرعت فریم را با SurfaceFlinger اندازه‌گیری کنید و نرخ فریم بازی را با استفاده از Android Frame Pacing (Swappy)، Vulkan و Android Dynamic Performance Framework (ADPF) بهینه کنید.
  • زمان شروع برنامه : درک اجزای داخلی راه‌اندازی سرد، گرم و داغ، اندازه‌گیری زمان نمایش اولیه (TTID) و زمان نمایش کامل (TTFD) و بهینه‌سازی کار راه‌اندازی.

مدیریت حافظه

  • قاتلان حافظه کم (LMK) : درک کنید که چگونه سرویس قاتل حافظه کم اندروید ( lmkd ) فرآیندها را از طریق oom_adj_score و profile memory footprint در اندروید استودیو، یونیتی و موتور آنریل اولویت‌بندی می‌کند.
  • میزان استفاده از حافظه (RSS ناشناس + swap) : اندازه مجموعه حافظه (RSS) و swap ناشناس برنامه خود را در حالت‌های پیش‌زمینه، سرویس و پس‌زمینه اندازه‌گیری و کاهش دهید.
  • میزان استفاده از حافظه بیت‌مپ : تشخیص تخصیص‌های بیت‌مپ بیش از حد بزرگ یا نشت‌شده و آزادسازی بافرهای گرافیکی هنگام انتقال اجزای رابط کاربری به پس‌زمینه.

باتری و کار پس زمینه

مجوزها و بهینه‌سازی ساخت

  • رد مجوزها : مجوزهای زمان اجرا را در متن درخواست کنید و منطق مجوز را به روشنی برای کاربران توضیح دهید.
  • بهینه‌سازی کد DEX : پیکربندی قوانین کوچک‌سازی، مبهم‌سازی و بهینه‌سازی R8 برای کاهش اندازه DEX و بهبود عملکرد زمان اجرا.
،

ارائه یک تجربه کاربری روان، پایدار و با مصرف باتری بهینه، نیازمند شناسایی و رفع گلوگاه‌های رایج عملکرد در حوزه‌های پایداری، رندر رابط کاربری، مصرف حافظه، کارهای پس‌زمینه، تأخیر در شروع به کار و بهینه‌سازی ساخت است.

راهنماهای این بخش، رفتار اساسی پلتفرم اندروید را برای هر نوع مشکل توضیح می‌دهند و نحوه تشخیص، پروفایل‌بندی و رفع آنها را با استفاده از ابزارهایی مانند Android Studio Profiler، Perfetto، Logcat و ApplicationExitInfo بررسی می‌کنند.

پایداری

  • ANRها : تشخیص و رفع خطاهای عدم پاسخگویی برنامه (ANR) ناشی از مسدود شدن نخ‌های رابط کاربری، ورودی/خروجی نخ اصلی، تداخل قفل یا گیرنده‌های پخش کند.
  • خرابی‌ها : خواندن ردپاهای پشته، بررسی خروجی Logcat و جلوگیری از استثنائات مدیریت نشده و سیگنال‌های بومی.

رندرینگ و راه‌اندازی

  • رندرینگ کند : فریم‌های رابط کاربری از دست رفته یا هنگ کرده ( >16ms و >700ms ) که ناشی از طرح‌بندی‌های پرهزینه، bind passها یا توقف‌های نخ اصلی هستند را شناسایی و رفع کنید.
  • جلسات کند (فقط بازی‌ها) : سرعت فریم را با SurfaceFlinger اندازه‌گیری کنید و نرخ فریم بازی را با استفاده از Android Frame Pacing (Swappy)، Vulkan و Android Dynamic Performance Framework (ADPF) بهینه کنید.
  • زمان شروع برنامه : درک اجزای داخلی راه‌اندازی سرد، گرم و داغ، اندازه‌گیری زمان نمایش اولیه (TTID) و زمان نمایش کامل (TTFD) و بهینه‌سازی کار راه‌اندازی.

مدیریت حافظه

  • قاتلان حافظه کم (LMK) : درک کنید که چگونه سرویس قاتل حافظه کم اندروید ( lmkd ) فرآیندها را از طریق oom_adj_score و profile memory footprint در اندروید استودیو، یونیتی و موتور آنریل اولویت‌بندی می‌کند.
  • میزان استفاده از حافظه (RSS ناشناس + swap) : اندازه مجموعه حافظه (RSS) و swap ناشناس برنامه خود را در حالت‌های پیش‌زمینه، سرویس و پس‌زمینه اندازه‌گیری و کاهش دهید.
  • میزان استفاده از حافظه بیت‌مپ : تشخیص تخصیص‌های بیت‌مپ بیش از حد بزرگ یا نشتی‌دار و آزادسازی بافرهای گرافیکی هنگام انتقال اجزای رابط کاربری به پس‌زمینه.

باتری و کار پس زمینه

مجوزها و بهینه‌سازی ساخت

  • رد مجوزها : مجوزهای زمان اجرا را در متن درخواست کنید و منطق مجوز را به روشنی برای کاربران توضیح دهید.
  • بهینه‌سازی کد DEX : پیکربندی قوانین کوچک‌سازی، مبهم‌سازی و بهینه‌سازی R8 برای کاهش اندازه DEX و بهبود عملکرد زمان اجرا.