2015-07-23 2 views
0

У меня есть AsyncTask, подключающийся к websocket.AsyncTask doInBackground возвращается слишком рано

protected Void doInBackground() { 
    client.connect(); 
    return null; 
} 

Когда он закончил попытку соединения, я хочу следующее произойдет (в настоящее время внутри onPostExecute):

protected void onPostExecute() { 
    if (socketConnected) { 
    doOtherThings(); 
    } else { 
    log("Failed to connect."); 
    } 

Я также бросил в следующем, в качестве еще одного зонда сортов (в WebSocketClient реализации):

public void onOpen() { 
    log("Opened successfully!"); 
    socketConnected = true; 
} 

метод onPostExecute выводит сообщение об ошибке, за которым следует сообщение об успешном от onOpen. Это говорит о том, что doInBackground возвращается слишком рано. Есть ли общая причина этого?

ответ

0

Да, вероятно, метод client.connect() создает ASyncTask, и это оставляет вашу задачу продолжением выполнения, заканчивая метод и переходя к onPostExecute.

Если это так, API, который вы используете, должен иметь некоторые методы для прослушивания асинхронных сообщений. API должен иметь некоторый прослушиватель или обратный вызов, который будет запущен в вашей теме.

EDIT: Я искал WebViewClient в Интернете, и метод connect() действительно создает новую тему, вы должны посмотреть, как правильно использовать вызовы.

+0

Не могли бы вы уточнить последнее предложение? – erythraios

Смежные вопросы