Java 如何将接收到的消息传递给AsyncTask-Android
我有一个关于Android的新手问题,关于我想做的事,我不知道怎么做。我在按钮中添加了代码,当我单击该按钮时,它会向设备发送UDP消息:Java 如何将接收到的消息传递给AsyncTask-Android,java,android,Java,Android,我有一个关于Android的新手问题,关于我想做的事,我不知道怎么做。我在按钮中添加了代码,当我单击该按钮时,它会向设备发送UDP消息: class SendUDPMessage extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... arg0) { String udpMsg =
class SendUDPMessage extends AsyncTask<Void, Void, String>
{
@Override
protected String doInBackground(Void... arg0)
{
String udpMsg = "hello world from UDP client " + UDP_SERVER_PORT;
DatagramSocket ds = null;
try
{
ds = new DatagramSocket();
InetAddress serverAddr = InetAddress.getByName("127.0.0.1");
DatagramPacket dp;
dp = new DatagramPacket(udpMsg.getBytes(), udpMsg.length(), serverAddr, UDP_SERVER_PORT);
ds.send(dp);
}
catch (SocketException e)
{
e.printStackTrace();
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if (ds != null)
{
ds.close();
}
}
return "Done";
}
类SendUDPMessage扩展了异步任务
{
@凌驾
受保护的字符串doInBackground(无效…arg0)
{
字符串udpMsg=“来自UDP客户端的hello world”+UDP\u服务器\u端口;
DatagramSocket ds=null;
尝试
{
ds=新的DatagramSocket();
inetAddressServerAddr=InetAddress.getByName(“127.0.0.1”);
数据包dp;
dp=新的数据包(udpMsg.getBytes(),udpMsg.length(),serverAddr,UDP_服务器_端口);
ds.send(dp);
}
捕获(SocketException e)
{
e、 printStackTrace();
}
捕获(未知后异常e)
{
e、 printStackTrace();
}
捕获(IOE异常)
{
e、 printStackTrace();
}
捕获(例外e)
{
e、 printStackTrace();
}
最后
{
如果(ds!=null)
{
ds.close();
}
}
返回“完成”;
}
按钮使用使用使用AsyncTask创建的线程并发送UDP消息。这很好,但我还需要类似的内容:发送消息-等待并重新发送消息,直到收到响应。如果我在后台有处理接收到的消息的内容,我如何将接收到的消息传递到此任务,以便它可以停止
p、 我是Java和Android新手,我用低级C语言编程,所以很难理解OOP,请耐心点。你应该使用
DatagramSocket.receive(DatagramPacket pack);
它阻塞线程,直到收到数据包。
看看: