shendaowu
V2EX  ›  Android

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

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

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

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

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

    也可以试试第三方推送,不知道现在的效果如何。
    mscb
        7
    mscb  
       Jul 31, 2017
    保证进程锁屏不被杀死应该就可以了吧?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5298 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 08:18 · PVG 16:18 · LAX 01:18 · JFK 04:18
    ♥ Do have faith in what you're doing.