起因
处理桌面快捷方式的时候 LauncherModel中使用forceReload方法会刷新整个workspace导致界面闪烁
解决方法
1.使用广播更新桌面快捷方式。
类似于安装新的apk后添加快捷方式,考虑到位置因素,不可行。
2.刷新桌面单个快捷方式。
workspace中发现updatePackageBadge方法,看名字就是它了。
刷新流程
LauncherModel中接收到广播后调用 updatePackageBadge方法,会最终调用workspace中的 updatePackageBadge方法。
所以只需要在 workspace中拿到快捷方式需要更新的bitmap即可,或者在workspace中对bitmap处理显示,所以需要拿到最初的bitmap进行处理。
最初的bitmap当然是在IconCache中cacheLocked拿到。至此问题解决。