珍爱生命,远离安卓

109 阅读1分钟

远离安卓

安卓是开放的、最好的系统,同时也是封闭的、最坏的系统。

看到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

缺点:需要修改系统设置、操作逻辑混乱。