我的服务收到udp消息。此代码始终有效:
InetSocketAddress inetSocketAddress = new InetSocketAddress(InetAddress.getByName(myIpAddress), udpPort);
DatagramSocket socket = new DatagramSocket(null);
socket.setReuseAddress(true);
socket.bind(inetSocketAddress);
只要其他设备将udp消息发送到myIpAddress,我的服务就会收到它们。它始终有效,即使设备关闭(屏幕关闭,未关闭)。
以下代码仅在设备屏幕开启时有效:
InetSocketAddress inetSocketAddress = new InetSocketAddress(InetAddress.getByName("255.255.255.255"), udpPort);
DatagramSocket socket = new DatagramSocket(null);
socket.setReuseAddress(true);
socket.bind(inetSocketAddress);
如果设备处于非活动状态(屏幕关闭),则服务仍会运行,但不会收到udp消息。我认为,Android会阻止广播消息在设备处于非活动状态时接收它们。无论如何都有可能收到它们吗?