安卓 MQTT 客户端如何保证 Service 一直运行在后台?

2022-06-22 11:45:37 +08:00
 zinwalin

有个客户端集成了 MQTT 库,在前台运行时,MQTT 消息可以正常接收和发送。 但是放在后台后, 消息就收不到了。

有办法让 MQTT service 一直运行吗?

7516 次点击
所在节点    Android
47 条回复
basncy
2022-06-22 20:10:16 +08:00
包名改成 com.tencent.mobileqq
PowerDi
2022-06-22 20:18:44 +08:00
原来现在已经那么严重了吗?保活都需要专门的思路了?
PowerDi
2022-06-22 20:19:34 +08:00
如果保活那么困难,现在为什么那么多安卓用户还在苦于后台 CPU 在猛跑
basncy
2022-06-22 20:20:59 +08:00
android 再先进的调度算法, 研究再多保活代码, 再多设置, 在这里可能就被某些国行厂商后台优化白名单一刀切了, 21 楼简单以暴制暴.
SupperMary
2022-06-22 21:07:15 +08:00
@PowerDi 厂家和 APP 有 py 交易
darkengine
2022-06-22 21:12:16 +08:00
@basncy 如果用户先安装了 qq ,这个包名的 apk 都安装不了。。。
zinwalin
2022-06-22 21:28:40 +08:00
@nothingistrue 如果是自己的定制安卓系统,有什么好办法保活吗? 我试了在系统级 App 里集成 MQTT Service ,放后台后,一样会收不到消息。
zinwalin
2022-06-22 21:28:58 +08:00
@psklf 感谢,我试试。
zinwalin
2022-06-22 21:29:33 +08:00
@springz 自己的定制系统,加白名单是啥意思? 系统级 App 放后台还是不行,我试过了。
zinwalin
2022-06-22 21:33:46 +08:00
@cczhrd 刚好这个我也加了, 还是不行。我们是定制的安卓系统,所以加了一些系统级的 App
springz
2022-06-22 21:53:47 +08:00
自己定制的系统随便玩啊,找编译 ROM 的人把你 App 加进去。
tanranran
2022-06-22 21:54:42 +08:00
如果是定系统级,把 APP 放到 /system/priv-app/下即可
zinwalin
2022-06-22 22:16:28 +08:00
@tanranran 放进去了,MQTT service 还是不能在后台长时间运行。
winterbells
2022-06-22 22:36:30 +08:00
dumpsys deviceidle whilelist +com.xxx
你都定制系统了,怎么后台权限还搞不定…
SteveWoo
2022-06-22 22:57:08 +08:00
不可能了,尤其是国外的文章不适合国情。 去 android 上把微信的白名单关了,微信去后台都收不到消息的。 国产厂商默认把微信加白名单,如果你们有实力去跟厂家谈谈。
zinwalin
2022-06-22 23:16:32 +08:00
@winterbells 感谢,dumpsys deviceidle whilelist +com.xxx 这台命令,如果不通过命令行,怎么默认加到系统里? 也就是编译时在哪里添加?
documentzhangx66
2022-06-22 23:36:22 +08:00
别的系统我不知道,小米系统就可以这样:

写个 APP 承载服务,然后让用户去系统里设置,该 APP 在后台能一直存活,不被限制。
passerby233
2022-06-23 02:41:24 +08:00
参考这个库 https://github.com/hannesa2/paho.mqtt.android 然后在客户端的权限管理里开启自启动,电池省电策略更改为无限制就行了。
treblex
2022-06-23 04:51:59 +08:00
nothingistrue
2022-06-23 09:27:25 +08:00
@PowerDi #23 高频激活——被杀——再激活这个循环,相比于单纯的常驻后台,CPU 消耗量可以多成百上千倍。Android 最大的问题不是常驻后台,而是自动唤醒方式多如牛毛。正常的常驻后台服务是消耗非常少的资源的(谷歌自带框架就是典型,几十个后台服务但是耗电量几乎无感)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/861328

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX