デバイスからコマンドを送信する必要があり、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
。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 は単純に優先順位をリセットするようです。.