从一开始我就使用Handler的方法post()并postDelayed()在与UI线程不同的线程中做了一些事情,我决定在其上创建一个TCP Socket,但它不起作用.
我收到了NetworkOnMainThreadException被扔了.
是否有任何方法可以执行post()和postDelayed()不在UI线程中的任务?
public class ServerHandler extends Handler {
private Socket serverSocket;
public ServerHandler(){
super(new MyHandlerThread("MyHandlerThread").getLooper());
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
public void connectServer()
{
post(serverConnection);
}
public void writeMessage(String msg){
try {
serverSocket.getOutputStream().write(msg.getBytes());
Log.d("MyLog","Message sent!");
}
catch (IOException io){
Log.d("MyLog","SendMessage error");
}
}
private Runnable serverConnection = new Runnable() {
@Override
public void run() {
try {
serverSocket = new Socket("152.168.21.24", 5001);
Log.d("MyLog","Server connected!"); …Run Code Online (Sandbox Code Playgroud)