ارائه یک تجربه کاربری روان، پایدار و با مصرف باتری بهینه، نیازمند شناسایی و رفع گلوگاههای رایج عملکرد در حوزههای پایداری، رندر رابط کاربری، مصرف حافظه، کارهای پسزمینه، تأخیر در شروع به کار و بهینهسازی ساخت است.
راهنماهای این بخش، رفتار اساسی پلتفرم اندروید را برای هر نوع مشکل توضیح میدهند و نحوه تشخیص، پروفایلبندی و رفع آنها را با استفاده از ابزارهایی مانند 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 را در حالتهای پیشزمینه، سرویس و پسزمینه اندازهگیری و کاهش دهید.
- میزان استفاده از حافظه بیتمپ : تشخیص تخصیصهای بیتمپ بیش از حد بزرگ یا نشتشده و آزادسازی بافرهای گرافیکی هنگام انتقال اجزای رابط کاربری به پسزمینه.
باتری و کار پس زمینه
- قفلهای بیداری بیش از حد : از نگه داشتن قفلهای بیداری جزئی برای مدت طولانی خودداری کنید و وظایف پسزمینه را به
WorkManagerیاJobSchedulerمنتقل کنید. - قفلهای بیداری جزئی گیر کرده : اطمینان حاصل کنید که هر قفل بیداری جزئی به دست آمده به درستی در تمام مسیرهای اجرا و خطا آزاد شده است.
- بیدار شدنهای بیش از حد : بیدار شدنهای دقیق با زنگ هشدار را کاهش دهید و کارهای پسزمینه برنامهریزیشده را دستهبندی کنید یا به تعویق بیندازید.
- اسکنهای بیش از حد وایفای در پسزمینه : تعداد دفعات اسکن وایفای در پسزمینه را به حداقل برسانید و از APIهای مکان و اتصال غیرفعال یا دستهبندیشده استفاده کنید.
- استفاده بیش از حد از شبکه در پسزمینه : انتقالهای شبکه تلفن همراه در پسزمینه را با استفاده از محدودیتهای
WorkManagerدستهبندی و به تعویق بیندازید. - مصرف بیش از حد باتری : با بررسی فعالیت پردازنده، حسگر و رادیو، تخلیه زیاد باتری را در دستگاههای تلفن همراه و دستگاههای Wear OS تشخیص دهید.
مجوزها و بهینهسازی ساخت
- رد مجوزها : مجوزهای زمان اجرا را در متن درخواست کنید و منطق مجوز را به روشنی برای کاربران توضیح دهید.
- بهینهسازی کد 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 ناشناس برنامه خود را در حالتهای پیشزمینه، سرویس و پسزمینه اندازهگیری و کاهش دهید.
- میزان استفاده از حافظه بیتمپ : تشخیص تخصیصهای بیتمپ بیش از حد بزرگ یا نشتشده و آزادسازی بافرهای گرافیکی هنگام انتقال اجزای رابط کاربری به پسزمینه.
باتری و کار پس زمینه
- قفلهای بیداری بیش از حد : از نگه داشتن قفلهای بیداری جزئی برای مدت طولانی خودداری کنید و وظایف پسزمینه را به
WorkManagerیاJobSchedulerمنتقل کنید. - قفلهای بیداری جزئی گیر کرده : اطمینان حاصل کنید که هر قفل بیداری جزئی به دست آمده به درستی در تمام مسیرهای اجرا و خطا آزاد شده است.
- بیدار شدنهای بیش از حد : بیدار شدنهای دقیق با زنگ هشدار را کاهش دهید و کارهای پسزمینه برنامهریزیشده را دستهبندی کنید یا به تعویق بیندازید.
- اسکنهای بیش از حد وایفای در پسزمینه : تعداد دفعات اسکن وایفای در پسزمینه را به حداقل برسانید و از APIهای مکان و اتصال غیرفعال یا دستهبندیشده استفاده کنید.
- استفاده بیش از حد از شبکه در پسزمینه : انتقالهای شبکه تلفن همراه در پسزمینه را با استفاده از محدودیتهای
WorkManagerدستهبندی و به تعویق بیندازید. - مصرف بیش از حد باتری : با بررسی فعالیت پردازنده، حسگر و رادیو، تخلیه زیاد باتری را در دستگاههای تلفن همراه و دستگاههای Wear OS تشخیص دهید.
مجوزها و بهینهسازی ساخت
- رد مجوزها : مجوزهای زمان اجرا را در متن درخواست کنید و منطق مجوز را به روشنی برای کاربران توضیح دهید.
- بهینهسازی کد 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 ناشناس برنامه خود را در حالتهای پیشزمینه، سرویس و پسزمینه اندازهگیری و کاهش دهید.
- میزان استفاده از حافظه بیتمپ : تشخیص تخصیصهای بیتمپ بیش از حد بزرگ یا نشتیدار و آزادسازی بافرهای گرافیکی هنگام انتقال اجزای رابط کاربری به پسزمینه.
باتری و کار پس زمینه
- قفلهای بیداری بیش از حد : از نگه داشتن قفلهای بیداری جزئی برای مدت طولانی خودداری کنید و وظایف پسزمینه را به
WorkManagerیاJobSchedulerمنتقل کنید. - قفلهای بیداری جزئی گیر کرده : اطمینان حاصل کنید که هر قفل بیداری جزئی به دست آمده به درستی در تمام مسیرهای اجرا و خطا آزاد شده است.
- بیدار شدنهای بیش از حد : بیدار شدنهای دقیق با زنگ هشدار را کاهش دهید و کارهای پسزمینه برنامهریزیشده را دستهبندی کنید یا به تعویق بیندازید.
- اسکنهای بیش از حد وایفای در پسزمینه : تعداد دفعات اسکن وایفای در پسزمینه را به حداقل برسانید و از APIهای مکان و اتصال غیرفعال یا دستهبندیشده استفاده کنید.
- استفاده بیش از حد از شبکه در پسزمینه : انتقالهای شبکه تلفن همراه در پسزمینه را با استفاده از محدودیتهای
WorkManagerدستهبندی و به تعویق بیندازید. - مصرف بیش از حد باتری : با بررسی فعالیت پردازنده، حسگر و رادیو، تخلیه زیاد باتری را در دستگاههای تلفن همراه و دستگاههای Wear OS تشخیص دهید.
مجوزها و بهینهسازی ساخت
- رد مجوزها : مجوزهای زمان اجرا را در متن درخواست کنید و منطق مجوز را به روشنی برای کاربران توضیح دهید.
- بهینهسازی کد DEX : پیکربندی قوانین کوچکسازی، مبهمسازی و بهینهسازی R8 برای کاهش اندازه DEX و بهبود عملکرد زمان اجرا.