как использовать Asynctask с сокетами - PullRequest
1 голос
/ 23 января 2012

У меня проблема с работой моего приложения ... Я использую класс Asynctask для выполнения моей фоновой операции, так как я работаю с сокетами, я считаю, что это хорошо в фоновом режиме.

Что ж, в моем приложении у меня естьпрослушиватель udp и отправитель udp, которые прослушивают данные с сервера и, соответственно, с любого типа данных, и я создал асинхронные классы для них обоих, теперь я хочу, чтобы оба класса Asynctask выполнялись из моей основной операции по нажатию кнопки, что я могу сделать, и у меня есть кнопка остановки, чтобы остановить выполнение, но как только я нажимаю на кнопку остановки, поток все еще продолжает работать, причина в том, что после вызова onCancelled () Asynctask, вызывается postexecute () и в моем postexecute () я делаю объект моего класса Asynctask и вызываю execute так, чтобы мой слушатель и отправитель продолжали работать, т.е.doinBackground () всегда продолжает вызывать себя, а слушатель и отправитель продолжают работать.

Я знаю, что создание объекта класса Asynctask в postexecute () не очень хорошая идея, потому что это будет b в бесконечном цикле, но если яЯ могу отменить выполнение при нажатии кнопки остановки, когда я звоню oncancelled (), может, b это работает для меня ..

Пожалуйста, помогите мне в этом.

1 Ответ

0 голосов
/ 23 января 2012

Я думаю, что ваша проблема в том, что когда вы отменяете свой asynkTask, вы фактически отменяете только самый внешний asynckTask, который был вызван в упражнении, но когда вы рекурсивно запускаете другие экземпляры вашего asyncTask, то вы должныотмените их все, чтобы остановить все это.

почему бы вам не удалить свой код изнутри doInBackground(), не поместить его в метод и не вызвать его изнутри doInBackground() следующим образом:

protected Void doInBackground(Object... params) {
while(!isCancelled()){
//call the method
}
return yourReturnType;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...