【发布时间】:2012-06-09 19:15:38
【问题描述】:
我正在开发一个 Android 应用程序。
我想通过一个简单的 echo 客户端来测试异步套接字在 Android 上的工作原理。
在Java tutorial我找到了以下代码:
import java.io.*;
import java.net.*;
public class EchoClient {
public static void main(String[] args) throws IOException {
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
echoSocket = new Socket("taranis", 7);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: taranis.");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for "
+ "the connection to: taranis.");
System.exit(1);
}
BufferedReader stdIn = new BufferedReader(
new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("echo: " + in.readLine());
}
out.close();
in.close();
stdIn.close();
echoSocket.close();
}
}
我想让用户填写一个 EditText,而不是阅读表单 System.in,当用户点击一个按钮时,我想发送用户在该 EditText 上介绍的文本。
另外,我想使用 AsyncTask 来实现。以上代码将在AsyncTask.doBackground()方法上。
我想做以下事情:用户介绍一个文本,然后他点击发送按钮,然后他等待查看响应。当我从 Echo Server 得到响应时,我让用户介绍一个新文本,然后重新开始这个过程。还有一个按钮可以关闭套接字并结束程序。
我的问题是:如何通知有可发送的文本?换句话说,当用户点击发送按钮时,我必须怎么做才能将该文本传递给 AsyncTask?
【问题讨论】:
-
最简单的解决方案是创建第二个 AsyncTask 并在用户点击第二个按钮时开始运行它。换句话说,每次点击按钮都会触发一个新的 AsyncTask 运行:
new MyAsyncTask().execute(userInput); -
@yorkw 以及如何从
AsynkTask发回数据,并从主要活动中捕获?
标签: android sockets android-asynctask