асинхронная задача занимает слишком много времени для выполнения задания
Мне нужно отправить команду с устройства и progressdialog
должен отображать прогресс, пока команда не будет завершена.Для этого я использую asynctask
в своем приложении.
Но на выполнение команды уходит много времени.
Итак, есть ли способ установить приоритет asynctask на максимум?
Любое предложение будет оценено. Заранее спасибо
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 (). .