我瞬间懵逼了,这么高大上的安卓“特性”我第一次知道,也不知道该后面怎么回复,求解
1
honeycomb 2017-06-15 21:54:48 +08:00 19
1,这不是莫名其妙的特性,而是这个应用滥用前台服务(作为推送的保活措施),并且恶意地试图隐藏前台服务必须要显示的持久通知导致的问题。从 Android7.1(AOSP)开始这个漏洞被修复。Android O DP3 则另增加了一个通知流,会另行显示所有使用前台服务的应用(和应用自身强制需要显示的通知共存)。
2,修复了这个 bug 的改动出现在 Android 7.1 具体的出处: https://android.googlesource.com/platform/frameworks/base/+/0ba4c71%5E!/ 3,请到这个地方去吐槽,Google 官方认为 O 新增的后台限制(这部分的代码,以及 AppOps 也是这个 Dianne Hackborn 写的)应当可以通过前台服务绕过。 |
2
kamen 2017-06-15 21:56:58 +08:00
一楼完美解答
|
3
honeycomb 2017-06-15 22:02:11 +08:00 1
|
4
AlwaysBehave OP @honeycomb 😯 所以这样还是算滥用?
我的”特性“加了引号是认为扇贝这样子做是有问题,但是官方现在这个回复大概意思算是“ won't fix"吧。 bug fix 倒是第一次被科普,多谢 他的通知倒是没有什么垃圾内容(目前只是提醒打卡,确实有用)。只是一直占在那里倒是很烦 Orz |
5
AirSc 2017-06-15 22:22:45 +08:00
不是可以隐藏通知吗?
|
6
AlwaysBehave OP @AirSc 我想保留他的每日打卡提醒……有的时候会忘记打卡
|
7
Cavolo 2017-06-15 23:10:14 +08:00 via iPhone
@AlwaysBehave 可以设置微信提醒,然后把 app kill 掉就行
|
8
honeycomb 2017-06-15 23:46:23 +08:00 4
@AlwaysBehave
滥用的理由是这样: 最初前台服务就是被设计成,使用时必须展示一个持久通知,以确保用户知晓这个应用正在持续运行。 前台服务被视作类似于可见的 Activity 这样有高优先级的对象,不会被杀,不会受到后台网络限制 /电池优化 /doze 等影响 但是它的实现有 bug,应用可以用这个方法绕过: 1,建立两个通知编号相同的前台 service 2,关掉其中一个 service,另一个 service 就能保持前台,但不会显示通知 使用这个方法,应用就可以绕开 Android 上花了大力气建立的各种优化电池消耗的的努力,所以说是恶意的。 我对 Android 开发组不满的地方,在于它们的态度消极,给出的方案(包括 O 新增的后台服务限制)不能解决问题。 但是不能指望它们会像 iOS 那样想尽办法保护用户隐私(这次 2 比特持久识别码和 Safari 和别人实现方法都不一样的跟踪妨碍简直是神来之笔)。 |
9
AlwaysBehave OP @Cavolo 诶也是,多谢提醒
|
10
AlwaysBehave OP @honeycomb 官方对于前台服务滥用其实并没有更多举动反而是花大力气限制后台,使得实际上下大力气做的改善并没有什么用。那也就是说如果应用仍然恶意利用前台现在唯一的办法就是扔冰箱或者上守护之类的玩意咯。(当然现在有个通知告诉你应用在跑着
|
11
KNOX 2017-06-16 00:38:14 +08:00 via Android
今年的 IO 上有人问到这个问题,Android 开发组的回答给予用户更多知情权,虽然目前的解决办法很暴力,不过仍在优化中。
|
12
kx5d62Jn1J9MjoXP 2017-06-16 01:55:55 +08:00 via Android
有道词典也是这样
之前京东有个版本也这样,后来更新了就好了,不知道是用了什么更强的黑科技,还是说妥协了 |
13
ghost444 2017-06-16 06:40:55 +08:00 via Android
来用墨墨背单词吧,虽然词库比较小专业词汇找不到但是一般还是够用的,Android 版简直良心
|
14
kn007 2017-06-16 08:26:16 +08:00
我是不需要它提醒,然后直接绿色守护。。。
|
15
honeycomb 2017-06-16 08:57:02 +08:00 via Android
@AlwaysBehave
目前为止只能这样了 |
16
missdeer 2017-06-16 09:03:49 +08:00
@ghost444 墨墨背单词免费版单词上限才 600 个。。。谁特么目标单词量才 600 啊。。。虽然每日签到分享可以加上限,但也是杯水车薪。。。
|
17
RoundCat 2017-06-16 09:08:13 +08:00 via Android
很久之前就有,反馈后只是回复已收到,然而。。等了一个月还是老样子,然后就卸载了
|
18
xingda920813 2017-06-16 09:12:52 +08:00
@honeycomb 好消息,现在已经标为 Fixed 了。
|
19
580a388da131 2017-06-16 09:16:28 +08:00
国内好多应用都有这玩意
|
20
singlepig 2017-06-16 09:29:57 +08:00
手机 QQ 的某个版本也是用了 @honeycomb 8#说的方法,隐藏了通知,结果我在 7.1.1 上遇到了 QQ 显示一个黑色通知栏的问题,里面啥东西也没有,漆黑一片。
|
21
manihome 2017-06-16 09:53:41 +08:00
我只想说我在扇贝写的反馈就没有回复过。。。买本书一个礼拜还没影、、、
|
22
ghost444 2017-06-16 10:06:19 +08:00 via Android
@missdeer 我现在免费额度有 1k4,背的单词才刚刚 1k 出头(捂脸
而且难得碰到从应用到 ToS 都在内同行领先的 app,完全值得付费啊 |
24
honeycomb 2017-06-16 10:14:52 +08:00
@xingda920813
你提到的 fixed 解决的不是这个滥用前台服务问题。 而应该是 RUN_IN_BACCKGROUND ignore 时,只终止了一个后台 service 的问题 https://issuetracker.google.com/issues/37126419 |
25
iluhcm 2017-06-16 10:21:17 +08:00 1
http://iluhcm.com/2017/03/12/experience-of-adapting-to-android-notifications/
写过一篇文章里边有相关的体验,前台通知在 7.1.X 的机子上的确是会暴露出来。应该是用了某个推送 sdk 导致的。 |
26
xingda920813 2017-06-16 16:36:42 +08:00
@honeycomb
看来 Google 的决定就是如此, 绑定和前台服务不受影响. 滥用前台服务的 App, Google 似乎无法理解它们在中国是存在的. https://issuetracker.google.com/issues/37126421 RUN_IN_BACKGROUND OP does not stop services when there are both foreground and background services. Status: Won't Fix (Intended Behavior) It is very much intentional that foreground services keep the app in the foreground so it is not prevented from running. |
27
zhouquanbest 2017-06-16 17:09:34 +08:00
这是个保活手段
然而 因为目前 7.1 还比较少 很多无良厂商并没有在 7.0 上去掉该方式 解决方法就是用 MyAndroidTool 手动 block 这个前台服务 珍爱生命 远离国产无良 app |
28
Bryan0Z 2017-06-18 14:00:38 +08:00 via Android
说真的,扇贝模式很恶心人
|
29
AlwaysBehave OP @Bryan0Z 你是指什么?
|