在多个活动中使用AsyncTask

时间:2014-03-19 00:10:18

标签: java android android-asynctask

我在正确使用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");
    }
}

1 个答案:

答案 0 :(得分:2)

不要使用AsyncTask。您似乎希望长时间保持连接打开状态。 AsyncTask仅应用于持续at most a few seconds的任务。您可以考虑使用Service代替。