Вопрос

Этот вопрос уже имеет ответ здесь:

PrintStatustask анализирует содержимое почтового ящика Gmail в поисках различных предметов интереса к сообщению. Но для каждой печати создается новая асинкткасса (). Выполнить () в соответствии с отладчиком. Разве эти задачи не должны умереть на выходе? Они должны быть убиты вручную?

public class Controller extends Activity {
    ...
    private boolean applyMenuChoice(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.menuStatus:
            new PrintStatusTask().execute();
            ...
    class PrintStatusTask extends AsyncTask<Void, String, Void> {
        @Override
        protected Void doInBackground(Void... unused) {
            ...
            return null;
        }
        @Override
        protected void onPostExecute(Void unused) {
            this.cancel(true);
        }   
    }
}
Это было полезно?

Решение

Хорошо, ребята, мне жаль, но я должен сказать вам, что вы не правы. Asynctask (почти) никогда не убит. Вызов Asynctask.cancel не убьет задачу.

Цитируется из документации Asynctask

Задача может быть отменена в любое время, вызывая Cancel (Boolean). Вызывая этот метод приведет к тому, что последующие вызовы в isCancelled () вернуть true. После вызова этого метода, онкан (объект), вместо онпостксекции (объект) будет вызвана после возврата doinbackground (Object []). Чтобы убедиться, что задача была отменена как можно быстрее, вы всегда должны проверять возвратное значение ISCancelled () периодически из DoInbackground (Object []), если это возможно (например, внутри цикла).)

Чтение документов может быть полезным ... так что я подведу это вам подвести итог, но так как я уже ответил в другом посте, я отправляю вас на это: Как я могу установить асинхронные URL -соединения на Android?

Я дал обходной путь к вашей проблеме, и да, некоторое время, некоторые асинктюда убиты. Но я не рекомендую использовать их, они бесполезны. Но, поскольку ваши бегущие асинктюды должны показать статус «ожидания», если они сделаны с задачей. В противном случае ваша задача не сделана, и я никогда не слышал о некоторой ошибке adb Thread.

С уважением !

Другие советы

Если вы поддерживаете ссылку на задачу вокруг, вы можете позвонить в его cancel метод отменить его. В противном случае они живут до тех пор, пока процесс вашего приложения делает или до тех пор, пока они не вернутся из doInBackground и (если присутствует) onPostExecute Функции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top