
https://www.williamlong.info/archives/5579.html
我比较关心技术原理,请重点讨论这个
1 ShuoHui 2019-01-10 13:14:32 +08:00 via iPhone 我以为有什么干货 |
2 CallMeReznov 2019-01-10 13:17:34 +08:00 月光博客的东西现在还能看? |
3 passerbytiny OP 原理没人讨论吗? ios 这可是被人破了后台了。 |
4 mydns 2019-01-10 13:41:33 +08:00 是哪个流氓软件你倒是说啊 |
6 v2chou 2019-01-10 13:47:28 +08:00 早上起来,发现我的 iPhone 电池的电量只有 4%了,但我记得昨晚睡觉前还有很多电量,这是怎么回事呢?是谁耗费了这么多的电量? 于是赶快查询电池设置( iPhone-设置-电池),发现电量在 12 点之后,从 80%一直降到了 4%,全部都是盒马鲜生和携程旅游这两个应用在后台活动了一晚上,直到把电池损耗完,于是立刻把这两个应用删除了。 我查看了一下 iPhone 的设置,APP 后台应用刷新功能是关闭的,按道理来说,应该不会有应用在后台刷新,这两个应用的通知功能也是关闭的,只有定位服务是打开的,可能这两个应用是通过定位服务以及蜂窝移动网络来耗电的。但令我感到奇怪的是,这两个应用我近期都没用过,也都没开通知功能,不知道他们是怎么从后台激活的。 看来,晚上手机不开飞行模式还真是有风险,特别是在中国这种环境,某些国产 app 还真流氓,白天不活动,看上去挺老实的,专门等晚上 12 点后疯狂在后台折腾,做的事情还非常耗电,不知道干的都是什么勾当。 备注一下 iPhone 查询偷电应用的方法:在 iPhone 里点击“设置-电池-过去 24 小时”,然后点击耗电量多的时间段,下面会显示应用名称。 |
7 passerbytiny OP @mydns #4 这是转载,我也没有额外的观点要添加,所以只放链接。 |
8 SeanChense 2019-01-10 13:53:07 +08:00 被定位唤醒了 |
9 kera0a 2019-01-10 13:53:14 +08:00 via iPhone 原理原文里写了吧,定位权限选 始终 ,app 可以后台定位来运行代码 |
10 SeanChense 2019-01-10 13:56:52 +08:00 |
11 w2er 2019-01-10 13:59:18 +08:00 via iPhone 确认了一下,后台应用刷新全关,定位除了地图其他也都全不给 |
13 mobaui 2019-01-10 14:05:41 +08:00 原谅我去看了下。。。为什么我的盒马 只耗了 1%的电 leeear.com/ifiles/1.jpg leeear.com/ifiles/2.jpg |
14 notreami 2019-01-10 14:07:44 +08:00 苹果手机耗电快,因为苹果舍不得扩电池容量。 |
15 passerbytiny OP @SeanChense #8 @kera0a #9 @SeanChense #10 原文直接删了应用,压根没去找原因,只是个猜测。定位这个我看了开发文档,定位权限“始终”确实比较耗电,但是并不会阻止系统暂停应用,而是在位置变化时唤醒应用;然而睡觉的时候位置压根不会变化,唤醒次数有限,是达不到博文上那么大的耗电量的。 |
16 passerbytiny OP 感觉 ios 这种后台是这样的:应用是单进程,只有前台、后台、暂停三种状态,满足特定条件就唤醒全部应用。这还真是够简单粗暴的。这样能制住乱开后台的应用,然而对于确实需要后台的应用,反而更浪费资源。 |
17 hpeng 2019-01-10 14:29:20 +08:00 via iPhone 开局一张图 |
18 helionzzz 2019-01-10 14:31:24 +08:00 苹果手机耗电快,是因为苹果电池容量小 |
19 SeanChense 2019-01-10 14:33:51 +08:00 @passerbytiny 只要唤醒一次我就开始保活,你能怎么办? |
20 kera0a 2019-01-10 14:50:25 +08:00 via iPhone |
22 passerbytiny OP @SeanChense #19 这种情况应该不存在的。后台超长活跃,跟前台长期未响应一样,都是影响操作系统正常运行的危险因素,发现就要强杀进程的。这点控制要是没有做,苹果就成笑话了。 |
23 passerbytiny OP @kera0a #20 我在文档上没有看到注册额外服务的地方,目前看到的方式有两个调用系统服务和注册唤醒来源,这种情况下,一唤醒,就是唤醒整个程序。 |
24 DRcoding 2019-01-10 15:02:54 +08:00 月光博客还没狗带啊,。。。就记得当时作者很多文章有浓烈的 ZZ 色彩就没有看过了。。。 |
25 580a388da131 2019-01-10 15:04:48 +08:00 via iPhone 月光的博客很在就废了 |
26 66beta 2019-01-10 15:05:28 +08:00 via Android 可能错怪人家了,可能 苹果到了冬天,电池要打对折 |
27 elevens 2019-01-10 15:06:19 +08:00 最近我也是发现 iPhone 掉电好快,以前基本一天一充,现在一天三充,而且待机耗电也很恐怖了,以前一晚上最多 3%左右,现在能掉 40%... |
28 mystrylw 2019-01-10 15:10:58 +08:00 看了这个帖子我都不敢发帖问了 因为我的盒马也在后台耗电,我的位置选项设置也是设置的使用程序时。 为什么都不针对问题本身,而去针对提出问题的人? |
29 kera0a 2019-01-10 15:12:20 +08:00 via iPhone |
30 galenzhao 2019-01-10 15:16:26 +08:00 @passerbytiny 播放一段空白音乐, 就会被当成播放器 而不去 kill |
31 passerbytiny OP @galenzhao #30 单纯在技术上是可行的,但是 ios 上敢这么用吗? |
32 helionzzz 2019-01-10 15:31:15 +08:00 @tvallday XS 2658 Xr 2942 max 3174。。再加上祖传 5W 小水管。。。有的时候真的是佩服苹果用户,是真的能忍。 |
33 kera0a 2019-01-10 15:40:21 +08:00 via iPhone @helionzzz 国产安卓流氓软件忍的了 ,没道理 5w 充电头忍不了吧。买一个手机是综合考虑的,也没有完美的设备,每个人的喜好也不一样。5w 充电头没得洗,不过 max 和 xr 的续航很不错 |
34 passerbytiny OP @kera0a #29 我看文档,ios 的应用后台休眠,跟 windows uwp 的原理是一样的,是进程暂停,只释放 CPU 或者类似的计算资源,不释放存储资源。所以应用后台休眠后,是不释放内存资源的,唤醒也不影响内存。 整个应用唤醒的方式,应用要想响应唤醒源,基本都要从入口重新进入,根据唤醒类型路由到具体的模块,再交给模块去执行。路由这一块要是优化不好,唤醒那一瞬间回很消耗 CPU,此时要是唤醒频率很高,有可能比常驻后台都更消耗 CPU。 |
35 niuqiang139 2019-01-10 16:02:31 +08:00 via Android 很多品牌都有断崖式掉电 |
36 helionzzz 2019-01-10 16:15:00 +08:00 @kera0a 安卓流氓 APP 我可以选择不用,没什么大不了的。 但是电池这种硬件真的已经伤害到手机作为通讯工具甚至生活必需品的使用体验了,优化这种节流式操作始终有上限,让我们静看发展 |
38 kera0a 2019-01-10 16:37:28 +08:00 via iPhone |
39 Athrob 2019-01-10 16:39:58 +08:00 |
40 kera0a 2019-01-10 16:40:35 +08:00 via iPhone |
41 Athrob 2019-01-10 16:40:37 +08:00 另外, v2 的图床好像故障了, 返回 500... |
42 ThirdFlame 2019-01-10 16:44:20 +08:00 基本上是定位的问题。 有定位权限的程序 在后台运行 就会导致电量下降很快。 所以 没事儿就把后台的进程都退出了。 就 ojbk 了。 |
44 SeanChense 2019-01-10 17:04:58 +08:00 @kera0a significantmonitoring 可以被杀后唤醒。 唤醒之后不断申请 backgroundtask 进行保活就行了。 |
45 M0 2019-01-10 17:09:52 +08:00 设置-后台刷新-允许后台刷新关闭 |
46 kera0a 2019-01-10 17:14:10 +08:00 via iPhone |
47 SeanChense 2019-01-10 17:20:46 +08:00 @kera0a 我最近正在做,刚好把唤醒这步搞定了。持续保活还没做,到时候可以交流交流。 |
48 kera0a 2019-01-10 17:30:29 +08:00 via iPhone @SeanChense backgroundTask 肯定不行的, 10 楼有文档,第一段就是,只能在前台申请一次 Apps that start a short task in the foreground can ask for time to finish that task when the app moves to the background. |
49 samlee123 2019-01-10 17:54:11 +08:00 逆向一下 APP 不就知道了 用猜。。。噗嗤 |
50 Alexander321 2019-01-10 18:56:12 +08:00 via iPhone 应该是 bug 了……推送权限不知道给没给,印象里推送唤醒可以跑 30 秒代码来着,业务没需求就没研究。之前接推送不记得哪家文档出的了…也可以后台播放一段没有声音的文件来免被干掉…… |
51 kingcos 2019-01-10 19:02:03 +08:00 via iPhone 保持后台的目的是什么?光保持后台的话,没有任何意义,冒着被下架的风险,我是不太信的 |
52 passerbytiny OP @kingcos #51 保不齐是要做一个隐藏功能,本身不费电,然而误伤了。我见过的程序开发过程,出现这种情况很正常。 |
53 imaple 2019-01-10 21:07:05 +08:00 下个携程和河马先试一下,明天再来评论 |
54 galenzhao 2019-01-17 14:00:27 +08:00 |