如何在Android屏幕上写出我在UDP包中获得的内容?

时间:2017-07-11 09:35:28

标签: java android udp

我想在Android编程中获得一些帮助。

我有一个接收UDP包的小程序,我尝试将消息写入TextView,但它不起作用。你知道这段代码有什么问题吗? Android Studio中没有任何红色下划线,但是当它获得一个包时,它既不会做任何事情,也不会崩溃。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        UDPReciever();
    }

    public void UDPReciever(){
        Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {
                try{
                    int port = 55777;
                    DatagramSocket serverSocket = new DatagramSocket(port);
                    byte[] receiveData = new byte[8];
                    byte[] sendData = new byte[8];

                    while(true)
                    {
                        DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                        serverSocket.receive(receivePacket);
                        String sentence = new String( receivePacket.getData());

                        TextView textView = (TextView) findViewById(R.id.editText);
                        textView.setText(sentence);
                    }
                } catch (Exception e) {

                }
            }
        });

        thread.start();
    }
}

1 个答案:

答案 0 :(得分:2)

这是因为更新TextView的代码不会在UI线程上执行。要在UI线程上执行代码,最简单的方法是使用runOnUiThread()的{​​{1}}方法,例如:

Activity