Java 在多个活动中使用AsyncTask
我在正确使用异步任务方面有问题。我使用AsyncTask与服务器通信。我在AsyncTask doInBackground中运行服务器连接。我的应用程序在后台监听,一旦捕获的消息使用publishProgress。然后我可以在我的应用程序中使用消息。在我的应用程序中,我正在登录服务器,如果成功,新活动将启动。我还需要在新活动中与服务器通信,但连接是在后台任务中创建的。我不知道如何通过新活动中建立的联系进行沟通。有人能给我建议吗?多谢各位 请看一下代码。我在LoginUser类中有此代码,成功登录到服务器后,新活动开始Java 在多个活动中使用AsyncTask,java,android,android-asynctask,Java,Android,Android Asynctask,我在正确使用异步任务方面有问题。我使用AsyncTask与服务器通信。我在AsyncTask doInBackground中运行服务器连接。我的应用程序在后台监听,一旦捕获的消息使用publishProgress。然后我可以在我的应用程序中使用消息。在我的应用程序中,我正在登录服务器,如果成功,新活动将启动。我还需要在新活动中与服务器通信,但连接是在后台任务中创建的。我不知道如何通过新活动中建立的联系进行沟通。有人能给我建议吗?多谢各位 请看一下代码。我在LoginUser类中有此代码,成功登录
//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");
}
}
//初始化
私有连接类mConnectClass;
私有连接任务mTask;
//执行连接任务
mTask=新连接任务();
mTask.execute(“”);
公共类connectTask扩展了AsyncTask{
@凌驾
受保护连接类doInBackground(字符串…消息){
Log.i(“终端”、“后台”);
mConnectClass=新连接类(
新的ConnectionClass.OnMessageReceived(){
@凌驾
//这里实现了messageReceived方法
已接收公共无效消息(字符串消息){
//此方法调用onProgressUpdate
出版进度(信息);
}
});
Log.i(“终端”,“启动…”);
mConnectClass.connectServer();
返回null;
}
@凌驾
受保护的void onProgressUpdate(字符串…值){
super.onProgressUpdate(值);
answerFromServer=Arrays.toString(值);
//serverMessage.append(“S:+Arrays.toString(values)+“\n”);
}
}
不要为此使用AsyncTask
。你似乎想让你的连接保持一段较长的时间AsyncTask
只应用于最后一次执行的任务。您可以考虑使用<代码>服务>代码>。 AN代码> AcyCastase<代码>是用于短时间的一次性后台任务。如果你建立了一个连接并想让它保持活动状态,你需要考虑使用服务。谢谢你的帮助!我想再问一个问题。我想让用户登录到服务器,然后在新活动中继续与服务器通信。你是怎么说的,我应该使用服务,然后我可以保持我的连接打开一段时间。但是,我需要在屏幕上显示来自服务器的新消息。我应该使用AsyncTask在ServiceClass中显示新消息吗?有没有更好的方法来实现这一点?可能有多种方法来完成这一点,但我会考虑发送一个。由于这是一个不同于你原来的问题,如果你需要更多的帮助,最好把它变成一个新问题。