Android Studio Button监听器放在非UI线程中出现的问题

今天做socket时分别建立一个read线程和write线程,而write线程里面建立button监听器,这样当button点击时就可以使用socket发送消息。

但是报错:NetworkOnMainThread

What?这不是在子线程的监听器中发送的消息吗?

后来发现:

Button监听事件不可以放在子线程,否则监听程序中所做的事会以为是在主线程做的。比如我创建了子线程A,在A中创建一个按钮并设置监听事件,点击后使用socket进行数据发送,因为监听器放在了子线程,所以android以为socket数据发送是在主线程:

Android Studio Button监听器放在非UI线程中出现的问题