首先讲一个腾讯的开源项目Hardcoder,下面是它的简单介绍。
Hardcoder 是一套 Android APP 与系统间的通信解决方案,突破了 APP 只能调用系统标准 API,无法直接调用系统底层硬件资源的问题,让 Android APP 和系统能实时通信。APP 能充分调度系统资源如 CPU 频率,大小核,GPU 频率等来提升 APP 性能,系统能够从 APP 侧获取更多信息以便更合理提供各项系统资源。同时,对于 Android 缺乏标准接口实现的功能,APP 和系统也可以通过该框架实现机型适配和功能拓展。
简单来说安卓APP和系统之间需要通过安卓系统框架来进行通信,例如你发一张照片给好友,这个请求会通过系统框架转发给系统底层,然后分配相应的资源,比如提高CPU频率等,让你的图片得到处理。
但是微信现在的功能越来越多,抛开硬件的提升,软件的优化设计,为了追求极致的流畅,通过系统框架调用已经很难得到提升,因此腾讯自研一个通信框架——Hardcoder。一般实现通信都会有服务端及客户端,就类似你看到我的这篇文章,也是放在服务端上面,你的电脑、手机作为客户端,与我的服务端进行通信,然后正在看这篇文章。
微信在国内手机厂商的支持下,把Hardcoder的服务端放在国内安卓系统中,客户端放在微信APP中。已知支持设备如下,详细见此链接。
现在来讲一下利弊,微信这种实现方法,确实使其运行更加流畅,但不一定省电。Hardcoder不可能对每个机型都有很好的调度适配,不可能比手机厂商对系统的资源调度适配得还好。对于用了几年的手机,微信APP的软件设计复杂提升所带来的性能要求,此设备硬件的正常调度可能无法满足,此时即使牺牲功耗,保证流畅度也是情有可原。但是当前时期的旗舰手机,一般都是性能过剩的,由安卓系统框架提供的资源调度就可以得到满足,Hardcoder的默认开启及默认配置,采取高性能的方式来处理请求,无疑是徒增功耗,即使你手机开启了省电模式,对于微信来说不一定会降低性能要求。
因此现在提供一种方法,可以自行决定是否使用Hardcoder框架及配置选择。首先下载一个APP——创建快捷方式,可以点击此链接下载,或者酷安下载或者自行搜索手机应用商店。安装完APP后,给予其创建快捷方式应用权限,一般打开应用,然后打开手机的任务卡片,长按此APP去系统设置里面改就可以了。
操作流程: 打开创建快捷方式——搜索“微信”或自己找到微信——点击右侧活动列表——搜索“hard”或自己找到相应关键字活动——点击详情——创建——回到桌面打开新增快捷方式
或者不创建快捷方式,点击旁边的“打开”直接打开
提高频率可以处理得更快,其中一些参数解释:
#✔即确认执行功能
#Hardcoder开启,如果关闭,请确保下面全部模块都取消打勾,实在关闭不了那没办法
"CLIENT ENABLE"
#测试日志,非开发者关闭即可
"DEBUG LOG"
#未知,无法关闭
"DAY SWITCH"
#定时开启,睡觉的时候可以关闭省电
"ENABLE TIME LIMIT"
#每次提高性能持续时间
"timeout"
#延时
"delay"
#触发行为,勿修改
"action"
#计算频率,0表示不开启,1提高频率最大,3最小
"CPU"
#读写速度,0表示不开启,1提高速度最大,3最小
"IO"
#以CPU大核心运行(最耗电)
"BIND THR"
#启动,可调高加速启动
"BOOT"
#编码视频,如压缩视频,需求频率高
"ENCODE_VIDEO"
#进入聊天界面
"ENTER_CHATTING"
#退出聊天界面
"QUIT_CHATTING"
#发送图片,如对非发送原图图片进行压缩
"SEND_PIC_MSG"
#发送信息
"SEND_MSG"
#接收信息
"RECEIVE_MSG"
#更新群组聊天
"UPDATE_CHATROOM"
#微信数据库
"DB"
#解码图片,接收对方图片
"DECODE_PIC"
#GIF图片初始化
"GIF_INIT"
#GIF图片掉帧,加载卡顿
"GIF_DROP_FRAME"
#微信主页面滑动
"SNS_SCROLL"
#微信好友界面滑动
"SNS_USER_SCROLL"
#微信消息界面滑动
"SNS_MSG_SCROLL"
#微信相册滑动
"MEDIA_GALLERY_SCROLL"
#专辑滑动,未知
"ALBUM_SCROLL"
#未知,看缩写和商业有关,应该是广告业务,无法关闭
"BIZ"
如果手机性能足够,建议关闭Hardcoder,让系统框架接管APP与系统间的通信,可以最优情况下省电,如果手机性能不够,在修改前请截图备份默认配置,然后对卡顿的方面提高CPU和IO的优先级。修改完后,按左上角返回键退出,然后强制停止微信,重新打开即可。目前已知微信会定期从手机系统还原配置,时间间隔不清楚,只有Root禁止或刷原生系统才可以保持关闭Hardcoder。
本质上Hardcoder就是国内安卓系统厂商给微信开的一个无视系统调度白名单,而不是软件层面上的优化设计,在官方文档中还提及未来会让更多的APP开发者接入。如果不加以限制,那么如果接入的APP都争相请求资源调度,即使你开了省电模式,但是系统框架控制范围之外,你的手机也会会耗电得厉害,甚至会崩溃,因为调用Hardcoder的App并不知道你的系统情况。如果其加以限制,就是架空了系统框架,开启另一个层面的垄断。