你可以这样做:

InputStream in = someBluetoothSocket.getInputStream();

int timeout = 0;

int maxTimeout = 8; // leads to a timeout of 2 seconds

int available = 0;

while((available = in.available()) == 0 && timeout < maxTimeout) {

timeout++;

// throws interrupted exception

Thread.sleep(250);

}

byte[] read = new byte[available];

in.read(read);

这样,您最初可以从具有特定超时的流中读取.如果你想在任何阅读时间实现超时,你可以尝试这样的事情:

Thread readThread = new ReadThread(); // being a thread you use to read from an InputStream

try {

synchronized (readThread) {

// edit: start readThread here

readThread.start();

readThread.wait(timeOutInMilliSeconds);

}

catch (InterruptedException e) {}

使用此方法,您可能需要某种事件处理程序来通知您的应用程序,如果该线程实际读取了输入流中的内容.

我希望有所帮助!

– – 编辑:

我没有使用任何处理程序实现了一个示例.

Socket s = new Socket("localhost", 8080);

final InputStream in = s.getInputStream();

Thread readThread = new Thread(new Runnable() {

public void run() {

int read = 0;

try {

while((read = in.read()) >= 0) {

System.out.println(new String(new byte[]{ (byte) read }));

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

});

synchronized (readThread) {

readThread.start();

try {

readThread.wait(2000);

if(readThread.isAlive()) {

// probably really not good practice!

in.close();

System.out.println("Timeout exceeded!");

}

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

android read设置超时时间,在Android中的BluetoothSocket inputstream.read()中实现超时相关推荐

  1. android webview 设置cookie时间,解决Android webview设置cookie和cookie丢失的问题

    Android页面嵌套了一个h5,H5页面内部有用户登陆页面,发现h5页面的登陆功能无法使用,一直登陆失败.和web那边商量一会,发现js写入的cookie丢失了.所有需要Android这边在重写写入 ...

  2. Android App 设置系统时间,语言和时区、系统重启

    文章目录 说明 1. 修改系统时间 1. 设置系统时间(仅设置xx:xx) 2. 设置系统日期(仅设置到xxxx年xx月xx日) 3.设置系统是否自动获取时间 4.判断系统是否自动获取时间 2. 修改 ...

  3. [bug]超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。...

    引言 自己弄了一个小项目--日程管理系统,在初始化日期时,查询了数据库,每个日期就会查询一次数据库,就导致了这个问题. 问题 出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小. Desc ...

  4. 超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大

    超时时间已到,但是尚未从池中获取连接.出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大 2008年11月27日 10:11 ASP.NET c#在使用SqlDataReader读取数据的时 ...

  5. 但是尚未从池中获取连接_解决报错“超时时间已到。超时时间已到,但是尚未从池中获取连接”的方案...

    超时时间已到.超时时间已到,但是尚未从池中获取连接.出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小. DataReader是独占连接的,就是说你的程序可能设计上有问题.比如说最大连接设 ...

  6. Android sharedPreference设置缓存时间

    不废话,需求:缓存登录时的token,超过设置的存储时间就无效,怎么做? 使用ACache也可以设置缓存时间,但ACache在清缓存的时候会被清空.  SharedPreferences存储默认都是无 ...

  7. android sp缓存,Android sharedPreference设置缓存时间

    不废话,需求:缓存登录时的token,超过设置的存储时间就无效,怎么做? 使用ACache也可以设置缓存时间,但ACache在清缓存的时候会被清空. SharedPreferences存储默认都是无时 ...

  8. android edittext设置多行,在Android的EditText视图中允许多行?

    在Android的EditText视图中允许多行? 如何在Android的EditText视图中允许多行? 12个解决方案 981 votes 默认情况下,Android中的所有EditText小部件 ...

  9. android 动态设置style属性值,android中的style属性值,以及一些预定义样式

    Android平台定义的主题样式:android:theme="@android:style/Theme.Dialog" // 将一个Activity显示为对话框模式 androi ...

最新文章

  1. OpenCV3实现人脸识别(一)——基于OpenCV3级联分类器实现人脸检测与眼睛检测
  2. 报表工具流行度以及对linux的支持情况调研
  3. 摆脱“空”检查的盛宴:使用JSON Patch正确执行PATCH
  4. java excel处理框架,Java三方—-excel框架之POI的使用一
  5. python的map怎么用_python中的map怎么使用
  6. 【广州】Web前端工程师
  7. 给linux内核传递数组,数组与指针 - Linux C编程实战之路_Linux编程_Linux公社-Linux系统门户网站...
  8. ElasticSearch权威指南学习(结构化查询)
  9. 60-100-024-使用-MySQL 表锁
  10. 033-Unit 11 Advanced Uses of the vi Editors
  11. 【报告分享】2020技术趋势报告-德勤-202003.pdf(附120页pdf原文下载链接)
  12. 2020年浙江省土地利用数据(矢量)
  13. Mac 安装Pytorch, Jupyter notebook, conda, python3
  14. python基础 - networkx 绘图总结
  15. c# Socket Udp通讯示例源码
  16. RFID射频识别的解读及应用
  17. 整理wind商誉数据2016-2019
  18. R-squared居然是负数
  19. SQL数据库不用SQL语句能显示全表的内容_MySQL DBA必读:万字归总表设计与SQL编写技巧...
  20. 163相册批量下载程序

热门文章

  1. signature=adf15bd90b83b628c647a1aa64741773,Thoracic Oncology
  2. 随记:我们需要怎样的数学教育?
  3. php 变量调试,PHP变量调试函数
  4. org.attoparser.ParseException: Could not parse as expression: “
  5. 用数据结构c语言写成绩排序,C语言数据结构 快速排序实例详解
  6. jqc3ff继电器引脚图_单片机控制继电器驱动电路图原理分析
  7. Mybatis动态sql的使用
  8. 深度 | 从DevOps到BizDevOps, 研发效能提升的系统方法
  9. 如何促合作共赢?技术人的一点经验分享
  10. 阿里云云效技术专家分享:云原生开发、调测及可靠发布解决方案