Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / AsyncTask. Не срабатывает событие onCancelled() / 3 сообщений из 3, страница 1 из 1
30.09.2017, 12:09
    #39528780
Slon747
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AsyncTask. Не срабатывает событие onCancelled()
Запускаю асинхронный процесс с отображением progressDialog.
Но при нажатии кнопки отмены не срабатывает событие onCancelled().
Не подскажете ли, почему?

Код: java
1.
2.
Tasks.taskExport = new Tasks.TaskExport();
Tasks.taskExport.execute();



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
class Tasks {
 
    static TaskExport taskExport;
 
    static class TaskExport extends AsyncTask<String, String, Boolean> {
 
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
    
                progressDialog = new ProgressDialog(mainActivity);
                progressDialog.setIndeterminate(true);
                progressDialog.setCancelable(false);
    
                progressDialog.setButton(BUTTON_NEGATIVE, mainActivity.getString(R.string.Cancel),
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                if (taskExport != null) {
                                    taskExport.cancel(true);
                                }
                                progressDialog.dismiss();
                            }
                        });
    
                progressDialog.show();
            }
        }
    
    
        @Override
        protected Boolean doInBackground(String... urls) {
            //....................................
            //....................................
            return true;
        }
    
    
        @Override
        protected void onPostExecute(Boolean result) {
            //....................................
            //....................................
        }
    
    
        @Override
        protected void onCancelled() {
            super.onCancelled();
            //....................................
            //....................................
        }
    
    
        @Override
        protected void onProgressUpdate(String... value) {
            super.onProgressUpdate(value);
            //....................................
            //....................................
        }
    }
}

...
Рейтинг: 0 / 0
30.09.2017, 15:16
    #39528831
Slon747
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AsyncTask. Не срабатывает событие onCancelled()
Заметил следующее.
В doInBackground() идет получение списка файлов на Dropbox. Сам процесс получения списка файлов зависает из-за того, что Dropbox прекратил поддержку протокола v1.
И если нажать Cancel, то почему-то не срабатывает onCancelled().
Но почему?
...
Рейтинг: 0 / 0
02.10.2017, 08:56
    #39529165
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AsyncTask. Не срабатывает событие onCancelled()
Скорее всего в doInBackground происходит нечто, чего твоя программа не ожидает и она тормозит.
Плюсом может не анализируешь https://developer.android.com/reference/android/os/AsyncTask.html#isCancelled() между делом при выполнении. Либо действительно апи зависает и тогда поток честно ждет результата.

Добавь избыточное логирование (с запросами, ответами) и наблюдай.

А вообще, апи 1 отключили навсегда. Смысл его тестировать?
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / AsyncTask. Не срабатывает событие onCancelled() / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]