Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.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 Android,如何在通过蓝牙发送数据时更新用户界面_Java_Android - Fatal编程技术网

Java Android,如何在通过蓝牙发送数据时更新用户界面

Java Android,如何在通过蓝牙发送数据时更新用户界面,java,android,Java,Android,我的应用程序上有一个按钮,当我点击时(带我进入图片库,目的是为了得到结果)。当我选择图片时,我会很好地恢复结果,然后开始使用独立的方法传输图像 问题是UI在gallery屏幕上卡住,然后屏幕变暗,直到传输完成。。。我尝试使用run-on UI更新UI,但它不起作用 while ((bytesRead = bis.read(buf, 0, buf.length)) != -1) { BT_data_out.write(buf, 0, bytesRead);

我的应用程序上有一个按钮,当我点击时(带我进入图片库,目的是为了得到结果)。当我选择图片时,我会很好地恢复结果,然后开始使用独立的方法传输图像

问题是UI在gallery屏幕上卡住,然后屏幕变暗,直到传输完成。。。我尝试使用run-on UI更新UI,但它不起作用

while ((bytesRead = bis.read(buf, 0, buf.length)) != -1)
        {
            BT_data_out.write(buf, 0, bytesRead);
            if(fill++ > 2) {BT_data_out.flush(); fill = 0;};
            prgrss += bytesRead;
            final String done = Integer.toString(prgrss);
            final String total = Integer.toString(fileL);

            if(update_rate > (50000/bufSize) ) {
                update_rate = 0;
                runOnUiThread(new Runnable()
                {
                    @Override
                    public void run()
                    {
                        mTextMISC.setText(done+"/"+total+" B");
                    }
                });

            }
            update_rate++;
        }

传输完成后,我可以看到UI线程的最终效果,但从未看到所有中间更新。

您无法从辅助线程以本机方式对主UI线程进行更新。为了做到这一点,您必须将附加到主UI线程,并从辅助线程向其发布消息。或者,您可以使用whichisandroids实现,这使得使用线程和处理程序变得更加容易。

您最好创建一个新线程来传输数据;)