下课睡觉 2017-05-22 07:22 采纳率: 16.7%
浏览 1474
已采纳

android 如何停止处于I/O状态的线程?

我又一个线程,读数据的线程,线程执行到这句话就会阻塞

 Log.e("info", "****************正 在 读 取****************");
                    size = mInputStream.read(buffer);

但是我想在activity退出的时候结束掉这个线程。
网上说不建议使用.stop来结束线程。我就用了interrupt,但是没有没有抛出中断的异常。
我又让哪个Thread 实现了InterruptibleChannel接口,也没有用啊。
这是actiity 的onDestroy的方法:

     /**
     * activity销毁的时候关闭串口
     */
    @Override
    protected void onDestroy() {
        //mReadThread就是读数数据的线程
        if (mReadThread != null) {
            canRead = false;
            mReadThread.interrupt();
        }
        //mInputStream就是读取数据的流
        if (mInputStream!=null){
            try {
                mInputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        handler.removeCallbacksAndMessages(null);
        handler = null;

        closeSerialPort();
        super.onDestroy();
    }
  • 写回答

4条回答 默认 最新

  • oyljerry 2017-05-22 07:38
    关注

    你这个阻塞在read了,所以线程不能中断,你需要调用read的非阻塞接口,就不会一直阻塞在I/O。当你想结束的时候,可以让线程退出。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R