【发布时间】:2014-03-19 00:10:18
【问题描述】:
我在正确使用 AsyncTask 时遇到问题。我使用 AsyncTask 与服务器通信。我在 AsyncTask doInBackground 中运行服务器连接。我的应用程序在后台侦听,一旦捕获的消息使用 publishProgress。然后我可以在我的应用程序中使用消息。在我的应用程序中,我正在登录服务器,如果成功,新活动将开始。我还需要在新活动中与服务器通信,但连接是在后台 AsyncTask 中创建的。我不知道如何通过新活动中的已建立连接进行通信。谁能给我建议?非常感谢!
请查看代码。我在 LoginUser 类中有这段代码,成功登录到服务器后,新的 Activity 开始了。
//init
private ConnectionClass mConnectClass;
private connectTask mTask;
//execute connectTask
mTask = new connectTask();
mTask.execute("");
public class connectTask extends AsyncTask<String, String, ConnectionClass> {
@Override
protected ConnectionClass doInBackground(String... message) {
Log.i("Terminal", "doInBackground.");
mConnectClass = new ConnectionClass(
new ConnectionClass.OnMessageReceived() {
@Override
// here the messageReceived method is implemented
public void messageReceived(String message) {
// this method calls the onProgressUpdate
publishProgress(message);
}
});
Log.i("Terminal", "Starting...");
mConnectClass.connectServer();
return null;
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
answerFromServer = Arrays.toString(values);
// serverMessage.append("S: " + Arrays.toString(values) + "\n");
}
}
【问题讨论】:
-
AsyncTask用于短期的一次性后台任务。如果您建立连接并希望保持连接状态,则需要考虑使用Service。
标签: java android android-asynctask