Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在后台运行线程_Java_Android_Multithreading_Sockets_Background - Fatal编程技术网

Java 在后台运行线程

Java 在后台运行线程,java,android,multithreading,sockets,background,Java,Android,Multithreading,Sockets,Background,我环顾四周,发现了不同的方法,所有这些方法似乎都会产生错误。这就是我想要做的。它正在连接到已在运行的服务器。 关于如何让它工作或改变它使它工作的任何想法 String serverAddress = MainActivity.serverAddress; int port = MainActivity.newport; Socket socket = new Socket(serverAddress, port); in = new BufferedReader(new InputStreamR

我环顾四周,发现了不同的方法,所有这些方法似乎都会产生错误。这就是我想要做的。它正在连接到已在运行的服务器。 关于如何让它工作或改变它使它工作的任何想法

String serverAddress = MainActivity.serverAddress;
int port = MainActivity.newport;
Socket socket = new Socket(serverAddress, port);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);           
String getName=MainActivity.name;

// Process all messages from server, according to the protocol.
while (true) {
    String line = in.readLine();
    if (line.startsWith("SUBMITNAME")) {
        out.println(getName);
    }
    else if (line.startsWith("NAMEACCEPTED")) {
        //textField.setEditable(true);
    }
    else if (line.startsWith("MESSAGE")) {
        mt.append(line.substring(8) + "\n");
    }
}

什么东西不起作用?是代码本身,还是作为线程运行这个whiletrue循环需要帮助

whiletrue循环将占用主java线程,因此您将无法在while循环之外执行任何其他操作。因此,首先我建议通过实现runnable或创建匿名类并启动线程,使while循环中的操作指向线程

这方面有很多例子:


希望这有帮助!如果我错误地解释了您的问题,请给我回消息。

您在哪里运行此代码,错误是什么?异步任务是个好主意。在doInBackground中运行网络代码,并在任何其他方法上更新UI。使用线程处理程序或asynctask执行所有网络操作