Vi.*_*Vi. 13 networking android standby wakelock
我希望我的应用程序通过移动连接连接到服务器,但允许设备进入睡眠模式.我希望它能在IP包装到来时醒来.
如何才能做到这一点?如何在不耗尽电池的情况下从互联网接收"中断"?
Nat*_*ann 23
当您从tcp流读取时被阻止时,设备可以进入深度睡眠状态,当tcp流量进入时,它会短暂唤醒设备,只要读入一点,就会启动唤醒锁,直到您收到整个传输然后释放它.
这是一个使用网络套接字的示例,我在后台运行此应用程序超过12小时,没有电池影响. https://github.com/schwiz/android-websocket-example
客户端在这里,阻塞读取在start方法中. https://github.com/schwiz/android-websockets/blob/master/src/com/codebutler/android_websockets/HybiParser.java
Flo*_*low 11
多年来,我一直在Android上使用长生活TCP连接而没有唤醒锁定.
我的经验是,当数据到达TCP连接并且设备处于深度睡眠状态时,它将至少在短时间内被唤醒.唤醒设备有时可能需要约2分钟,但通常在几秒钟内完成.
现在设备处于唤醒状态,接收过程也有一段时间处理数据.现在要么该过程能够在设备重新进入深度睡眠之前这样做,要么设备将被置于深度睡眠中以暂停该过程.这里重要的是数据不会丢失,它保留在内存中,并且该过程能够在下次设备离开深度睡眠时恢复处理数据的工作.当然,这意味着如果发件人等待他的数据的答案,可能需要一些时间,直到他得到它.
一旦您的网络库通知您收到了新消息,您就可以进行唤醒锁定.但是如果你做了,那么确保正确处理锁,即确保它在某个点和每个代码路径中被释放.我个人从来没有经历过唤醒锁的需要,Android设备总是足够清醒来处理请求.但你的耕作可能会有所不同.
归档时间: |
|
查看次数: |
16059 次 |
最近记录: |