Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将接收到的消息传递给AsyncTask-Android_Java_Android - Fatal编程技术网

Java 如何将接收到的消息传递给AsyncTask-Android

Java 如何将接收到的消息传递给AsyncTask-Android,java,android,Java,Android,我有一个关于Android的新手问题,关于我想做的事,我不知道怎么做。我在按钮中添加了代码,当我单击该按钮时,它会向设备发送UDP消息: class SendUDPMessage extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... arg0) { String udpMsg =

我有一个关于Android的新手问题,关于我想做的事,我不知道怎么做。我在按钮中添加了代码,当我单击该按钮时,它会向设备发送UDP消息:

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);
它阻塞线程,直到收到数据包。 看看: