今回はアプリが起動している時のみ定期的に処理を実行したいので、Lifecycle.Event.ON_START のタイミングで処理を開始する。
下記のような感じ。
public class Xxxx implements LifecycleObserver {
private final Handler handler = new Handler();
private Runnable runnable;
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onAppStart() {
runnable = new Runnable() {
@Override
public void run() {
// do something.
// 3秒ごとに実行
handler.postDelayed(this, 3000);
}
};
handler.post(runnable);
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onAppStop() {
handler.removeCallbacks(runnable);
}