【问题标题】:Read data from socket if new data arrives in Android如果新数据到达 Android,则从套接字读取数据
【发布时间】:2011-10-22 03:01:08
【问题描述】:

我有一个与服务器通信的应用程序。当新数据可用于获取时,我希望我的应用程序仅读取套接字的输入流。

目前,我使用 java.nio.channels 的 SocketChannel 类创建了一个计时器,用于每 20 毫秒(轮询)读取套接字的输入流。这不是很好,因为即使没有可用数据,它也会最终读取套接字。而且会很快耗尽电池电量。

是否有适用于 Android 的 API 会在有新数据可用时告知或向连接的客户端发送一个标志,以便这是我唯一读取输入流的时间?

【问题讨论】:

    标签: android sockets timer inputstream


    【解决方案1】:

    请参阅this,但简短的回答是否定的,没有用于此的 API。顺便说一句,如果没有数据可用,SocketChannel/Selector 不会真正读取套接字,只需检查它的状态。

    对于推送通知,您可以查看Android Cloud to Device Messaging Framework。 AFIAK,它以类似的方式实现:它们保持套接字打开,并发送通知 有空的时候。它很可能已经针对低电池使用进行了调整,并且是操作系统的一部分,因此值得一试(2.2 及更高版本)。

    【讨论】:

      猜你喜欢
      • 2014-06-07
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 2013-07-10
      • 2011-10-10
      相关资源
      最近更新 更多