场景识别-界面无活动状态识别的目的:
界面无活动下且非音视频场景,亮屏存在阻止屏幕超时休眠的情况,可认为存在功耗异常
界面无活动状态指:界面没有手指点击事件
2. 识别原理亮屏中界面无触摸事件且前台进程未发生改变超过3分钟,可以认为界面无活动状态
3. 友商调研应用界面切换、亮屏、手指离开界面时更新无活动状态时长
3.1 系统埋点frameworks/base/core/java/android/view/View.java
参考文章
https://baijiahao.baidu.com/s?id=1709178712356441413&wfr=spider&for=pc
public boolean onTouchEvent(MotionEvent event) {
...
case MotionEvent.ACTION_UP:
}
...
}
3.2 API 接口
/**
* 亮屏中界面无触摸事件且前台进程未发生改变超过3分钟,可以认为界面无活动状态
*/
public boolean isNoUserActive() {
long curScreenOnTime = SystemClock.elapsedRealtime() - mUserActivityTime;
if (curScreenOnTime > 180_000) {
return true;
} else {
return false;
}
}
/**
* touch up 事件、亮屏事件变化、前台进程变化时触发更新
*/
private void updateUserActivityTime() {
if (!isScreenOff()) {
mUserActivityTime = SystemClock.elapsedRealtime();
}
}
3.3 更新 UserActivityTime 时机
touch up 事件、亮屏事件变化、前台进程变化时触发更新
case ConstantEvent.SCREEN_ON:
case ConstantEvent.ACTIVITY_RESUMED:
case ConstantEvent.TOUCH_UP:
updateUserActivityTime();
break;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)