1
从2018年5月开始开发iHass,直到现在的贝壳家v2.1.5,已经一年半了,但受限于移动平台的电量消耗,杀进程是众多后台服务程序员的噩梦,贝壳家在下列场景需要后台通讯:
1、地理位置上报,贝壳家设置的180s进行一次地理定位请求并进行上报,采用的时Alarm的方式来唤醒上报,在绝大部分手机上,在亮屏的情况下,没有问题,而在绝大部分手机上,在熄屏大约5min后,android系统将进入doze模式,停止上报;
2、状态通知:当home assistant的状态发生变化时,贝壳家在接收到变化(包含长连接和亮屏时主动拉取hass所有实体状态两种触发点)时,可以按照设定进行通知提醒;
3、语音控制:当设置了语音唤醒后,接收到“贝壳贝壳”或者“你好贝壳”的唤醒词后,将进入语音控制状态;
4、情景触发:支持地理位置触发、NFC触发、蓝牙触发、wifi触发,都需要后台进程进行扫描和感知;
5、桌面组件刷新:需要后台进程获取home assistant的更新信息然后刷新桌面小组件;
6、通知栏组件维持:当后台进程退出后,通知栏组件也将消失。
针对这些,这一年多时间一直在时断时续的和杀进程做斗争,目前,维持贝壳家活着的方案有如下,供各位看官选用:
1、添加到进程白名单,大部分手机都可以通过进入多任务界面后下拉贝壳家将其添加到白名单,从而躲避手动清理内存时被kill;
2、添加到受保护进程,一般可以通过各手机的手机管家、各种安全管理之类的系统自带软件将贝壳家加入到保护列表,尽可能避免被系统清理干掉;
3、添加到忽略电池优化(部分机型慎用,比如联想,会很费电),忽略电池优化后,部分手机能够保证在锁屏状态下放置贝壳家进入doze模式,并且每3分钟被唤醒一次,基本不会被杀掉了,但绝大部分机型设置了也是百搭;
4、添加通知栏组件,让贝壳家的后台进程变成前台服务,提高优先级,被kill的几率会小很多,并且基本没有电量副作用;
5、添加桌面小组件,和上一条一样的,会好一丢丢;
6、今天增加的功能:让贝壳家模拟你常用的第三方应用(比如淘宝、抖呀抖)创建桌面图标,然后把这些应用原本的图标藏起来,后续都通过点击模拟的桌面图标来启动第三方应用,会同时拉起贝壳家的后台服务,这个应该比较下下策,但也比较狠,哼。
另外,额外发布两个APK:
它可以上报到gpslogger集成,也可以上报到附件的ihasslogger组件
上报到ihasslogger组件可以同时上报是否充电、是否亮屏、前台应用(可开关)、电量信息
这个APP实现了和上述保活中提到的第六中保活方式相同的功能,不同的是从贝壳家中剥离了出来,因此你也可以用这个小工具去拉起你其他需要后台保活的服务,如果不知道怎么玩儿,就进群吧!