Android 异常 android.os.NetworkOnMainThreadException

Android 异常 android.os.NetworkOnMainThreadException

hash070 459 2022-02-24

在开发树莓派小车控制端时发现,当使用Socket网络编程时,程序闪退并显示android.os.NetworkOnMainThreadException异常

经查阅资料后发现,从SDK3.0开始,google不再允许网络请求(HTTP、Socket)等相关操作直接在主线程中,其实本来就不应该这样做,直接在UI线程进行网络操作,会阻塞UI、用户体验不好。
也就是说,在SDK3.0以下的版本,还可以继续在主线程里这样做,在3.0以上,就不行了。

解决方案有以下几种方式

  1. 使用多线程(Thread)
  2. 多线程(Runnable)
  3. 使用Handler执行耗时任务