You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何线程未按预期运行?Android主线程网络异常问题

Android主线程网络异常问题解析

第一段代码报错原因

你调用clientSocket.start()确实启动了ClientSocket对应的线程,但**startConnection()和sendMessage()这两个核心网络操作,是直接在onCreate所在的主线程中同步执行的**,并没有被放到clientSocket线程的执行逻辑里。

Android明确禁止主线程执行耗时网络操作,否则会抛出android.os.NetworkOnMainThreadException。你这里只是启动了一个空线程,实际网络请求仍在主线程运行,自然触发异常。

第二段代码正常运行的原因

这段代码把startConnection()和sendMessage()封装到了新Thread的Lambda逻辑块(对应线程的run()方法)中,调用start()后,这个新线程会独立执行里面的网络操作,完全脱离主线程,符合Android的线程规范,因此不会触发异常。

核心误区说明

  • Thread.start()的作用是触发线程执行自身run()方法内的逻辑,并非“标记后续代码都在该线程执行”。
  • 必须将耗时操作(比如网络请求)放到线程的run()方法(或Lambda代码块)内部,才能真正让子线程处理这些任务。

内容的提问来源于stack exchange,提问作者jungleparrot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 10:24:09