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。10THREAD_PRIORITY_DEFAULTは 0 で、THREAD_PRIORITY_FOREGROUND-2 です。

(別名 9) を選択THREAD_PRIORITY_BACKGROUND + THREAD_PRIORITY_MORE_FAVORABLEすると、スレッドは 10% の制限でバックグラウンド cgroup から除外されますが、ユーザー インターフェイス スレッドを頻繁に中断するほど重要ではありません。

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

ただし、基礎となる実装は、異なるタスク、次の AsyncTask などに同じ Thread オブジェクトを再利用する可能性があることに注意してください。ただし、doInBackground() が返された後、Android は単純に優先順位をリセットするようです。.

于 2015-12-02T11:58:10.097 に答える