我们在接收 UDP 广播数据包时遇到了一个大问题。我要疯了...
问题是:
1-一切正常。
2-我们可以接收数据包。
3-如果我不关闭 android(未按下主页按钮或关闭键),我让 android 进入睡眠状态(屏幕关闭 - > OnPause 和 OnStop)
4-我关闭了我的接入点(没有 wifi,模拟出门在外)。
5-我等2分钟
6-我打开接入点
7-当Android唤醒时,我一直收到超时,在这种情况下:
如果我再次使用 eclipse-> Timeout 启动应用程序
如果我销毁应用程序(后退按钮)并重新启动(onCreate)应用程序->超时
如果我按主页按钮唤醒 - >超时
如果我禁用并启用 wifi --> OK,我会收到数据包
如果我按下按键唤醒 - > OK,我收到数据包
Asycntask do in background{
.....
byte[] message = new byte[1500];
s = new DatagramSocket(null);
s.setReuseAddress(true);
s.bind(new InetSocketAddress(dataclass.getDataclass().GGGPort));
p = new DatagramPacket(message, message.length);
s.setSoTimeout(500);
s.setBroadcast(true);
dataclass.getDataclass().setGoOut(true);
s.receive(p);
}
问题:
1-home键和关机键唤醒android有什么区别?他们做同样的事情-> OnPause,OnStop-->(解锁)OnRestart。wifi会发生什么?
2-为什么当程序运行但没有接收时,如果我禁用/启用wifi它可以正常工作?这意味着代码是好的......这是一个android问题?
PD:我杀死 Asynctask OnStop 并在重新启动时执行