1

https://github.com/yigit/android-priority-jobqueueでアクティブなジョブのリストを取得する推奨される方法があるかどうか知りたい

そうすれば、永続的なジョブがまだ待機している場合、ユーザーにそのジョブを知らせることができます。

4

1 に答える 1

6

誤用につながる可能性があるため、このような API は提供していません。たとえば、ジョブが存在するかどうかを確認して、追加するかどうかを決定します (競合状態のレシピであるため)。

これが本当に必要な場合は、永続的なキューをオーバーライドして、ジョブの追加/削除を追跡できる独自のキューを提供できます。詳細については、JobManager 構成 WIKI を参照してください。

https://github.com/yigit/android-priority-jobqueue/wiki/Job-Manager-Configuration

編集:競合状態の例

誰かが次のようなコードを書くかもしれません:

if (!jobManager.hasJobOfType(ImportantJob.class)) {
    jobManager.addJob(new ImportantJob());
} else {
    // it is already added, no need to re add
}

ここで、hasJobOfTypetrue を返す競合状態が発生する可能性がありますが、その間に Job がキャンセルされようとしています。今、実行するジョブはありません:/。別の競合状態は、コードが別の場所で呼び出した可能性があるため、追加されますが、呼び出しaddJobInBackground時にはまだ追加されていません。hasJobOfType

このような場合の最善の解決策は、別のジョブを再作成するonCancel か、onRun メソッドで以前のジョブのキャンセルを手動で処理することです (グローバル カウンターなどを使用)。もう 1 つのオプションはcancelAsync、そのコールバック バージョンで method を使用することです。

http://yigit.github.io/android-priority-jobqueue/javadoc/index.html

于 2015-12-21T01:10:18.567 に答える