асинхронная задача занимает слишком много времени для выполнения задания


Мне нужно отправить команду с устройства и progressdialog должен отображать прогресс, пока команда не будет завершена.Для этого я использую asynctask в своем приложении. Но на выполнение команды уходит много времени.

Итак, есть ли способ установить приоритет asynctask на максимум?

Любое предложение будет оценено. Заранее спасибо

3 4

3 ответа:

Ну, вы можете попробовать это:

protected Void doInBackground() {
    Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
/* do the work */
}

Вы также можете задать свой собственный тайм-аут, если не хотите, чтобы пользователь ждал ответа от веб-службы в течение определенного времени.

В настоящее время Android использует фоновую группу потоков для всех потоков с приоритетом THREAD_PRIORITY_BACKGROUND или хуже, и THREAD_PRIORITY_BACKGROUND равно 10, а THREAD_PRIORITY_DEFAULT равно 0 и THREAD_PRIORITY_FOREGROUND равно -2.

Если вы перейдете на THREAD_PRIORITY_BACKGROUND + THREAD_PRIORITY_MORE_FAVORABLE (aka 9), ваш поток будет выведен из фоновой группы c ограничением 10%, при этом он не будет достаточно важным, чтобы слишком часто прерывать потоки пользовательского интерфейса.

 protected final YourResult doInBackground(YourInputs... yis) {
        Process.setThreadPriority(THREAD_PRIORITY_BACKGROUND + THREAD_PRIORITY_MORE_FAVORABLE);
        ...
    }

Но имейте в виду, что базовая реализация может повторно использовать один и тот же объект потока для различных задач, для следующих AsyncTask, или что там еще. Похоже, что Android просто сбрасывает приоритет после возврата doInBackground (). .