功耗基础知识介绍
为什么要做功耗优化
如何来做功耗优化
功耗组成
器件功耗计算
功耗分析
功耗评估
PowerMonitor
电池电量计
import android.os.BatteryManager;
import android.content.Context;
BatteryManager mBatteryManager = (BatteryManager)Context.getSystemService(Context.BATTERY_SERVICE);
Long energy = mBatteryManager.getLongProperty(BatteryManager.BATTERY_PROPERTY_ENERGY_COUNTER);
Slog.i(TAG, "Remaining energy = " + energy + "nWh");
厂商自带耗电排行
耗电排行
功耗归因
Battery Historian
AS Profiler
线程池监控
线上 CPU 异常精准监控
DISPLAY
屏幕亮度
降低刷新率
降低 TP 扫描频率
GPU
降低分辨率
减少刷新区域
帧率对齐
使用 SurfaceView 视频播放
硬件绘制和软件绘制
复杂算法用 NPU 代替 GPU
CPU
CPU 高负载优化
// 方法逻辑有裁剪,仅贴出主要逻辑
private JSONArray packMiscLog() {
do {
......
try {
cursor = mDb.query(......);
int n = cursor.getCount();
......
if (start_id >= max_id) {
break;
}
} catch (Exception e) {
} finally {
safeCloseCursor(cursor);
}
} while (true);
return ret;
}
// 边界条件未满足,无法break
while (true) {
...
if (shouldExit()) {
break
}
}
// 异常处理不妥当,导致死循环
while (true) {
try {
do someting;
break;
} catch (e) {
}
}
// 消息处理不当,导致Handler线程死循环
void handleMessage(Message msg) {
//do something
handler.sendEmptyMessage(MSG)
}
后台资源规范使用
视频硬解替换软解
NETWORK
长链接心跳优化
Doze 模式适配
AUDIO
降低音量
调整音频参数
CAMERA
SENSOR
GPS
降低精度
降低频率&提高间隔
低功耗模式
总结
加入我们
抖音 Android 基础技术团队是一个深度追求极致的团队,我们专注于性能、架构、包大小、稳定性、基础库、编译构建等方向的深耕,保障超大规模团队的研发效率和数亿用户的使用体验。目前北京、上海、杭州、深圳都有大量人才需要,欢迎有志之士与我们共同建设亿级用户的 APP! 感兴趣的同学可以点击“阅读原文”,进入字节跳动招聘官网查询「抖音基础技术 Android」相关职位,也可以邮件联系:gaoyuan.mmm@bytedance.com 咨询相关信息或者直接发送简历内推!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。