小编Ise*_*sen的帖子

Android处理程序,不在ui线程中执行post()

从一开始我就使用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)

java multithreading android android-handler

6
推荐指数
1
解决办法
1971
查看次数

标签 统计

android ×1

android-handler ×1

java ×1

multithreading ×1