我正在開發一個Android應用程序。將數據傳遞給正在運行的AsyncTask
我想測試異步套接字如何在Android上做一個簡單的echo客戶端。
在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();
}
}
,而不是讀形式System.in
我希望讓用戶填寫一個EditText,當一個按鈕我想給用戶引入的文本用戶水龍頭那EditText。
而且,我想使用AsyncTask。以上代碼將在AsyncTask.doBackground()
方法上。
我想做以下事情:用戶介紹一個文本,然後他點擊發送按鈕,然後他等待看到響應。當我得到Echo Server的響應時,我讓用戶介紹一個新的文本,並重新開始這個過程。還有另一個按鈕可以關閉套接字並結束程序。
我的問題是:如何通知有文本可發送?換句話說,當用戶點擊發送按鈕時,我必須做些什麼才能將該文本傳遞給AsyncTask?
最簡單的解決方案是創建第二個AsyncTask,並在用戶點擊第二個按鈕時開始運行它。換句話說,每次點擊按鈕都會觸發一個新的AsyncTask來運行:'new MyAsyncTask()。execute(userInput);' – yorkw
@yorkw以及如何從AsynkTask發回數據並從主要活動中捕獲它? –