怎样写代码才能让安卓在锁屏状态下一直能够接收网络数据?

2017-07-31 17:02:02 +08:00
 shendaowu
有相关的书或者资料最好。
除了 wakelock 还有其他方法吗?越省电越好。之前搜“安卓 锁屏 timer ”的时候搜到个文章,里面提到个 AlarmManager,据说是使用手机上的实时操作系统实现的定时。有没有类似的方法?我搜了一下,好像那个实时操作系统不能处理
WiFi 和蓝牙。另外我只是自己写程序自己用,有没有什么奇巧淫技可以用?比如用一些什么东西唤醒手机,然后接收广播,然后再开始接收网络数据。
9567 次点击
所在节点    Android
7 条回复
flynaj
2017-07-31 18:35:08 +08:00
其实很简单取得 root 权限以系统程序运行就可以了
pagxir
2017-07-31 18:42:35 +08:00
用 tcp 保活连接,设置 wifi 一直连接。对于国产系统,可以用 vpn 的方式 。
Orzpls
2017-07-31 19:43:19 +08:00
QQ 和微信是怎么实现的?
chinawrj
2017-07-31 20:03:10 +08:00
abbenyyy
2017-07-31 20:36:52 +08:00
@Orzpls QQ 和微信是因为体量大到手机厂商不加入白名单就会被用户骂,所以才能做到这样的。你可以把你应用的包名改成微信的包名,也可以达到一样的效果。
gamexg
2017-07-31 21:07:51 +08:00
由于各个程序都试图后台保活造成电量掉的快,现在手机厂家基本把所有的后台运行砍干净了。
AlarmManager 基本被厂家封得差不多了,唤醒次数一多就不工作了。

前年做推送时发现可以建立一个长连接,然后由服务器每分钟发一个心跳来保活连接并唤醒你的程序,注意需要服务器发送心跳包,客户端根本没有可靠的方式能够定时发送心跳包。

不过现在没在接触 android,不知道现在的系统还能不能这么玩。

另外可以反编译系统看看 AlarmManager 的包名白名单,用个白名单内的包名。中兴的白名单记得有 gps.* 的。

也可以试试第三方推送,不知道现在的效果如何。
mscb
2017-07-31 22:07:24 +08:00
保证进程锁屏不被杀死应该就可以了吧?

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

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

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

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

© 2021 V2EX