远离安卓
安卓是开放的、最好的系统,同时也是封闭的、最坏的系统。
看到zhihu的上一篇“珍爱生命,远离webview”有感而发。其实那篇文章记录的几个bug只算得上是毛毛雨。
安卓真正的大坑还是那个永恒不变的需求 —— 保活。
别以为app保活就是要干坏事。
以下这些增强效率的功能:日历提醒、后台音乐、熄屏朗读、后台下载,哪个不需要保活?
没有合理的保活机制:百度云熄屏了就罢工;没收到提醒,错过重要日期;音乐听一半卡住……
MIUI长按多任务,进入应用设置,可以管理器其省电策略。然而很多情况下,这就是个摆设,甚至于设置了“无限制”,反而会导致应用更容易被杀死!(百分百复现,后台log就是被periodical killer杀死)
普通app,需要保活的方面又分多种。首先最基本的,保不被杀死。然后,保代码不挂起。这又涉及另一神坑 —— webview的代码保活。
熄屏后五分钟,准时给你掐断webview代码活性,导致计时器停止、网络请求挂起,惊不惊喜,意不意外?!
最近,测试“大声朗读”功能,就遇到了这个问题。
文章、小说听一半卡住,难不难受?!
无敌 · 保活技术
第一招:虚拟熄屏。app保持屏幕常亮,然后显示黑色界面。缺点:普通屏幕,黑色仍然是亮的。
第二招:每隔一段时间,自动亮屏后,“迅速”熄屏。
TestHelper.wakeUpAndUnlock(PDICMainActivity.this);
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 200
缺点:需要修改系统设置、操作逻辑混乱。