以前有很多关于android.os.NetworkOnMainThreadException
异常的问题,这实际上是android防止我们冻结UI的一种保护措施。
从另一个线程(因此,而不是MainThread
)打开套接字应解决此问题:
Thread t = new Thread (new Runnable() {
@Override
public void run() {
try{
Socket socket = new Socket ( SOME_IP_AS_STRING , SOME_PORT_AS_INT);
// do some IO with socket
}
catch (Exception e) {}
}
});
t.run();
但是,此代码抛出了上述异常 - android.os.NetworkOnMainThreadException
,
并且在调试时(使用Android Studio),看起来run()
似乎在MainThread
下运行,这没有任何意义。
我在哪里弄错了?