4

我需要从设备发送命令,并且progressdialog应该在命令完成之前显示进度。为此,我asynctask在我的应用程序中使用。但是完成命令需要很长时间。

那么,有没有办法将 asynctask 的优先级设置为最大呢?

任何建议将不胜感激。提前致谢

4

3 回答 3

25

那么你可以试试这个:

protected Void doInBackground() {
    Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
/* do the work */
}
于 2013-01-21T12:07:09.483 回答
2

您还可以定义自己的自定义超时,以防您不想让用户在指定时间之后等待来自 Web 服务的答案。

于 2013-03-06T06:16:47.163 回答
0

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() 返回后重置了优先级。.

于 2015-12-02T11:58:10.097 回答