我需要从设备发送命令,并且progressdialog
应该在命令完成之前显示进度。为此,我asynctask
在我的应用程序中使用。但是完成命令需要很长时间。
那么,有没有办法将 asynctask 的优先级设置为最大呢?
任何建议将不胜感激。提前致谢
我需要从设备发送命令,并且progressdialog
应该在命令完成之前显示进度。为此,我asynctask
在我的应用程序中使用。但是完成命令需要很长时间。
那么,有没有办法将 asynctask 的优先级设置为最大呢?
任何建议将不胜感激。提前致谢
那么你可以试试这个:
protected Void doInBackground() {
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
/* do the work */
}
您还可以定义自己的自定义超时,以防您不想让用户在指定时间之后等待来自 Web 服务的答案。
THREAD_PRIORITY_BACKGROUND
目前,Android 为所有优先级或更差的线程使用后台线程 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 对象。不过,Android 似乎只是在 doInBackground() 返回后重置了优先级。.