https://github.com/yigit/android-priority-jobqueueでアクティブなジョブのリストを取得する推奨される方法があるかどうか知りたい
そうすれば、永続的なジョブがまだ待機している場合、ユーザーにそのジョブを知らせることができます。
https://github.com/yigit/android-priority-jobqueueでアクティブなジョブのリストを取得する推奨される方法があるかどうか知りたい
そうすれば、永続的なジョブがまだ待機している場合、ユーザーにそのジョブを知らせることができます。
誤用につながる可能性があるため、このような 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
}
ここで、hasJobOfType
true を返す競合状態が発生する可能性がありますが、その間に Job がキャンセルされようとしています。今、実行するジョブはありません:/。別の競合状態は、コードが別の場所で呼び出した可能性があるため、追加されますが、呼び出しaddJobInBackground
時にはまだ追加されていません。hasJobOfType
このような場合の最善の解決策は、別のジョブを再作成するonCancel
か、onRun メソッドで以前のジョブのキャンセルを手動で処理することです (グローバル カウンターなどを使用)。もう 1 つのオプションはcancelAsync
、そのコールバック バージョンで method を使用することです。
http://yigit.github.io/android-priority-jobqueue/javadoc/index.html