【发布时间】:2016-07-13 13:51:27
【问题描述】:
我在连接和断开连接后显示消息时遇到了一点问题。
我正在尝试按下我的连接按钮并在新线程中建立通信以获取 toast 消息:您已连接,如果我未连接以获取异常中的 toast:您未连接。
我尝试用
替换新线程runOnUiThread(new Runnable() /*but then It underline*/}).start(); 在我的代码末尾是一个错误。当我删除启动并运行应用程序时,它无法连接到我的服务器。
我尝试了许多解决方案,但没有一个有效。如果您能帮助我,我将非常感激。
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
try {
server = serverTxt.getText().toString();
Socket socket = new Socket(server, port);
socket.setSoTimeout(30000);
connected = true;
Toast.makeText(getApplicationContext(), "You are connected",Toast.LENGTH_LONG).show();
//send the message to the server
here = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "You are not connected",Toast.LENGTH_LONG).show();
}
}
}).start();
}
});
【问题讨论】:
-
您是否要在 Fragment 中执行此操作?
-
1) 在 runOnUiThread 调用之后你不需要 .start() 。 2) 尝试在 runOnUiThread 中使用套接字代码可能会抛出 NetworkOnMainThread 异常 -> 仅使用 toast 部分
标签: android multithreading exception tcp toast