首页 > 解决方案 > 如何在 Textview 中显示数据 2 秒(android Studio)?

问题描述

我想在 Textview 中显示数据 2 秒。所以我从 arduino 收到的数据在我使用 serialwrite 之间没有延迟。我使用 InputStream 和 DatainputStream 来接收数据。当数据在 textview 中显示时仍然有问题。它会突然获得下一个数据的机会。有什么方法可以将其保持2秒并抓住下一个数据吗?我在 android Studio 中编写代码。.



private void receive(byte[] data) {
        InputStream is = null;
        DataInputStream dis = null;
        try {
            is = new ByteArrayInputStream(data);
            dis = new DataInputStream(is);
            while (dis.available() > 0) {
                byte[] b = new byte[data.length];
                dis.read(b, 0, 8);
                 count++;
                String part = HexDump.dumpHexString(b).substring(HexDump.dumpHexString(b).indexOf("E7 0"), HexDump.dumpHexString(b).indexOf("0A"));

               
             if (part.contains("E7 01")) {
                   //receive_text2.setText((part));
                    show_text(receive_text2,part);


                }
                if (part.contains("E7 02")) {
                    receive_text3.setText(String.valueOf(1000*unsiged(b[5])+100*unsiged(b[6])));

                }
                if (part.contains("E7 03")) {
                    receive_text4.setText((part));

                }
                if (part.contains("E7 05")) {
                    receive_text5.setText((part));

                }
                receive_text6.setText(String.valueOf(count));

            }
                


            

        }catch (Exception e){
             receive_text2.append("");
             receive_text3.append("");
             receive_text4.append("");
             receive_text5.append("");
             receive_text6.append("");
          }
    }

标签: javaandroiddatainputstreamtimedelay

解决方案


将要显示的所有字符串添加到 Arraylist

ArrayList<String> strings = new ArrayList<>();

然后做:

Runnable job = new Runnable() {
    @Override
    public void run() {
        if (!strings.isEmpty()) {
            textView.setText(strings.get(0));
            strings.remove(0);
            textView.postDelayed(this, 2000);
        } else {
            textView.removeCallbacks(this);
        }
    }
};

textView.postDelayed(job, 2000); // delay of 2 seconds before setting a text to textView

推荐阅读