あるタスクをしようとした時、そのタスクがうまくいかないので一定時間バックオフしてもう一度やり直す、みたいなことをしたい時に、Handler がとても便利なのだけれど、それをまとめてライブラリ化してみた。
https://github.com/KeithYokoma/Boogaloo
バックオフを一定時間に設定したり、だんだんとバックオフを長く、あるいは短くしたり、というのをビルトインで組み込んでいます。ちょっとまだバグがあるかも。 Exponential Backoff もそのうち入れたい。
前に実行したタスクをキャンセルする機構もあります。
今のところは、Handler を使ってメッセージキューにどんどんつんで実行するようになっていて、データの喪失とかは考慮していない簡単な作りになっています。単純に、ある処理のまとまりを関数オブジェクトとして、それを成功するまで何度かトライするっていう用途のものです。