我需要从设备发送命令,progressdialog
应该显示进度,直到命令完成。为此,我在我的应用程序中使用asynctask
。
但要完成命令需要很长时间。
那么,有没有办法将asynctask的优先级设置为最大值?
任何建议将不胜感激。 提前致谢
答案 0 :(得分:25)
你可以试试这个:
protected Void doInBackground() {
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
/* do the work */
}
答案 1 :(得分:2)
您还可以定义自己的自定义超时,以防您不希望用户在过去一定时间内等待网络服务的回答。
答案 2 :(得分:0)
目前,Android对优先级为THREAD_PRIORITY_BACKGROUND
或更差的所有线程使用后台线程cgroup,THREAD_PRIORITY_BACKGROUND
为10,而THREAD_PRIORITY_DEFAULT
为0且THREAD_PRIORITY_FOREGROUND
为-2。
如果你选择THREAD_PRIORITY_BACKGROUND + THREAD_PRIORITY_MORE_FAVORABLE
(又名9),你的线程将被提升到背景cgroup之外,其中10%的限制,而不是太重要,不足以中断你的用户界面线程。
protected final YourResult doInBackground(YourInputs... yis) {
Process.setThreadPriority(THREAD_PRIORITY_BACKGROUND + THREAD_PRIORITY_MORE_FAVORABLE);
...
}
但请注意,底层实现可能会为不同的任务,下一个AsyncTask或其他任务重用相同的Thread对象。但是,在doInBackground()返回后,Android似乎只是重置了优先级。