ابزار Battery Historian بینشی در مورد مصرف باتری دستگاه در طول زمان ارائه می دهد. در سطح کل سیستم، ابزار رویدادهای مرتبط با قدرت را از لاگ های سیستم در یک نمایش HTML تجسم می کند. در سطح ویژه برنامه، این ابزار دادههای مختلفی را ارائه میکند که میتواند به شما در شناسایی رفتار برنامهای که باتری کم میکند کمک کند.
این سند برخی از راههایی را که میتوانید از Battery Historian برای یادگیری در مورد الگوهای مصرف باتری استفاده کنید، توضیح میدهد. این سند با توضیح نحوه خواندن دادههای کل سیستم که Battery Historian گزارش میکند، آغاز میشود. سپس، راههایی را ارائه میکند که از طریق آنها میتوانید از Battery Historian برای تشخیص و عیبیابی رفتار برنامه خود در رابطه با مصرف باتری استفاده کنید. در آخر، نکات متعددی در مورد سناریوهایی ارائه میکند که در آن Battery Historian ممکن است به ویژه مفید باشد.
از نمای گسترده سیستم استفاده کنید
ابزار Battery Historian تجسمی در سطح سیستم از رفتارهای مختلف برنامه و سیستم همراه با همبستگی آنها با مصرف باتری در طول زمان ارائه می دهد. این نمای که در شکل 1 نشان داده شده است، می تواند به شما در تشخیص و شناسایی مشکلات استفاده از انرژی در برنامه خود کمک کند.
![نمایش Battery Historian از رویدادهای سیستمی که بر مصرف برق تأثیر می گذارند.](https://developer.android.com/static/topic/performance/images/generic-timeline.png?authuser=0&hl=fa)
جالب توجه خاص در این شکل، خط روند نزولی سیاه، افقی و نشان دهنده سطح باتری است که در محور y اندازه گیری می شود. به عنوان مثال، در همان ابتدای خط باتری، تقریباً در ساعت 6:50 صبح، تجسم افت نسبتاً شدیدی در سطح باتری نشان می دهد.
شکل 2 نمای نزدیک از آن قسمت از نمایشگر را نشان می دهد.
![نمای نزدیک از جدول زمانی Battery Historian تقریباً از ساعت 6:50 صبح تا 7:20 صبح.](https://developer.android.com/static/topic/performance/images/s-generic-closeup.png?authuser=0&hl=fa)
در همان ابتدای خط Battery Level، با کاهش شدید باتری، صفحه نمایش سه چیز را نشان می دهد: CPU در حال اجرا است، برنامه یک wakelock به دست آورده است، و صفحه نمایش روشن است. به این ترتیب، Battery Historian به شما کمک می کند تا متوجه شوید که وقتی مصرف باتری زیاد است، چه اتفاقاتی رخ می دهد. سپس می توانید این رفتارها را در برنامه خود هدف قرار دهید و بررسی کنید که آیا بهینه سازی های مرتبطی وجود دارد که می توانید انجام دهید.
تجسم در سراسر سیستم می تواند سرنخ های دیگری نیز ارائه دهد. به عنوان مثال، اگر نشان دهد که رادیو تلفن همراه مرتباً خاموش و روشن می شود، ممکن است فرصتی برای بهینه سازی این رفتار از طریق API های برنامه ریزی هوشمند مانند JobScheduler یا Firebase Job Dispatcher وجود داشته باشد.
بخش بعدی نحوه بررسی رفتار و رویدادهای خاص برنامه خود را توضیح می دهد.
مشاهده داده های خاص برنامه
علاوه بر داده های سطح کلان ارائه شده توسط نمای گسترده سیستم، Battery Historian همچنین جداول و برخی تجسم داده های خاص هر برنامه ای را که در دستگاه شما اجرا می شود ارائه می دهد. داده های جدولی شامل:
- میزان مصرف برق تخمینی برنامه در دستگاه.
- اطلاعات شبکه
- Wakelocks.
- خدمات.
- اطلاعات فرآیند
جداول دو بعد داده در مورد برنامه شما ارائه می دهند. ابتدا، می توانید رتبه بندی مصرف انرژی برنامه خود را در مقایسه با سایر برنامه ها جستجو کنید. برای انجام این کار، روی جدول برآورد قدرت دستگاه در زیر جدول ها کلیک کنید. این مثال یک اپلیکیشن خیالی به نام Pug Power را بررسی می کند.
![بررسی اینکه کدام اپلیکیشن ها بیشترین مصرف انرژی را دارند.](https://developer.android.com/static/topic/performance/images/app-rankings.png?authuser=0&hl=fa)
جدول شکل 3 نشان می دهد که Pug Power نهمین مصرف کننده بزرگ باتری در این دستگاه و سومین برنامه بزرگ است که بخشی از سیستم عامل نیست. این داده ها نشان می دهد که این برنامه بررسی عمیق تری دارد.
برای جستجوی دادههای یک برنامه خاص، نام بسته آن را در قسمت پایینی از دو منوی کشویی زیر انتخاب برنامه ، که در سمت چپ تصویرسازی قرار دارد، وارد کنید.
![ورود به یک برنامه خاص که داده های آن برای مشاهده.](https://developer.android.com/static/topic/performance/images/dropdown.png?authuser=0&hl=fa)
وقتی یک برنامه خاص را انتخاب میکنید، دستههای تجسم دادههای زیر برای نمایش دادههای خاص برنامه به جای دادههای کل سیستم تغییر میکنند:
- SyncManager.
- فرآیند پیش زمینه
- Wakelock فضای کاربری
- برنامه برتر.
- JobScheduler.
- Activity Manager Proc.
تجسم SyncManager و JobScheduler بلافاصله مشخص میکند که آیا برنامه شما بیشتر از آنچه لازم است همگامسازی میکند و کارها را اجرا میکند. با انجام این کار، آنها می توانند به سرعت فرصتی را برای بهینه سازی رفتار برنامه شما برای بهبود عملکرد باتری نشان دهند.
همچنین میتوانید یک قطعه دیگر از دادههای تجسم خاص برنامه، یعنی Userspace Wakelock را دریافت کنید. برای گنجاندن این اطلاعات در گزارش اشکال، دستور زیر را در پنجره ترمینال خود وارد کنید:
$ adb shell dumpsys batterystats --enable full-wake-history
شکل 5 و 6 داده های Pug Power را نشان می دهد: شکل 5 تجسم داده های خاص برنامه را نشان می دهد، و شکل 6 داده های جدولی مربوطه را نشان می دهد.
![تجسم داده ها برای برنامه تخیلی Pug Power.](https://developer.android.com/static/topic/performance/images/pug-visualization.png?authuser=0&hl=fa)
نگاهی به تجسم چیزی بلافاصله آشکار را نشان نمی دهد. خط JobScheduler نشان می دهد که برنامه هیچ کاری برنامه ریزی نشده است. خط SyncManager نشان می دهد که برنامه هیچ همگام سازی انجام نداده است.
با این حال، بررسی بخش Wakelocks از دادههای جدولی نشان میدهد که Pug Power تعداد wakelockهایی را در مجموع بیش از یک ساعت بدست میآورد. این رفتار غیرمعمول و پرهزینه می تواند دلیل مصرف انرژی بالای برنامه باشد. این بخش از اطلاعات به توسعهدهنده کمک میکند منطقهای را هدف قرار دهد که احتمالاً بهینهسازی به آن کمک زیادی میکند. در این مورد، چرا برنامه زمان بیداری زیادی را به دست می آورد و توسعه دهنده چگونه می تواند این رفتار را بهبود بخشد؟
موارد دیگری که Battery Historian می تواند کمک کند
موارد بسیار دیگری وجود دارد که در آنها Battery Historian می تواند به شما در تشخیص فرصت های بهبود رفتار باتری کمک کند. به عنوان مثال، Battery Historian می تواند به شما بگوید که آیا برنامه شما این است:
- شلیک زنگ بیداری بیش از حد مکرر (هر 10 ثانیه یا کمتر).
- به طور مداوم قفل GPS را در دست بگیرید.
- برنامه ریزی کارها هر 30 ثانیه یا کمتر.
- زمانبندی هر 30 ثانیه یا کمتر همگامسازی میشود.
- استفاده از رادیو سلولی بیشتر از آنچه انتظار دارید.