黑屏手势
- 画C打开相机
- 画W打开微信
- 画V打开手电筒
- 双指下滑打开/关闭音乐
- 右箭头>下一首
- 左箭头<上一首
性能优化
具体思路流程本地电脑留存
本次进行其他细节的优化
动画缓存图片保存
frameworks/base/services/core/java/com/android/server/wm/WindowState.java
private boolean shouldSaveSurface() {
// save blackgesture
}
CPU进行调频
黑屏手势的keycode识别的同时进行CPU调频
mPerfService.enableCPUHightMode(1500);
后台线程HandlerThread启动应用
private HandlerThread mBackThread;
private Handler mBackHandler;
mBackThread = new HandlerThread("wms_background_thread");
mBackThread.start();
mBackHandler = new Handler(mBackThread.getLooper());
mBackHandler.post(new Runnable() {
@Override
public void run() {
openAppBg();
}
暂时禁用系统动画
WindowManagerService服务的方法控制
数组切换画图片
private void drawImage(){
if (mImageView != null && mCurrentDrawableIds != null && mCurrentDrawableIndex >= 0 && mCurrentDrawableIndex < mCurrentDrawableIds.length){
Log.d("BlackGesture", "drawImage mCurrentKeyCode = " + mCurrentKeyCode + ", mCurrentDrawableIndex = " + mCurrentDrawableIndex);
mImageView.setImageResource(mCurrentDrawableIds[mCurrentDrawableIndex]);
invalidate();
}
}
底层直接解锁
Framwork层进行解锁,绕开API调用解锁,因为API调用慢
底层直接亮屏
防止亮屏过快,闪现壁纸,尤其是第一次黑屏手势图片还没加载出来的情况,这里需要规避
小结
这里提供性能思路。目前优化后的黑屏手势效果是如丝般顺滑