我有一个通过蓝牙与热敏打印机通信并打印数据的应用程序。
我写入 outputStream,刷新以确保写入每个数据,然后关闭套接字。然而,实际发生的是 socket.close() 命令在所有内容都打印出来之前执行,所以打印输出被剪切了。
这是我写数据的顺序(它在一个巨大的 try-finally 块中):
//open socket here, assign outputStream, write data to be printed
//after all those mmOutStream.write() statements, these are on the finally statement
mmOutStream.flush();
mmOutStream.close();
socket.close();
如您所见,我调用 flush 以确保写入所有数据,我关闭流,然后关闭套接字。
但是,我认为实际发生的是 socket.close() 语句甚至在所有内容都打印成功之前就被执行了。
到目前为止,我所做的是在 close 语句之前放置一个 Thread.sleep() 命令,但这不是我想要的解决方案。
有谁知道如何在关闭套接字之前确保 OutputStream 实际被刷新/清空?我查看了 Bluetooth Socket 和 OutputStream 的文档,似乎没有一种直接的方法可以做我想做的事。
任何想法都会有所帮助。谢谢。