You need an onListen callback that restarts the timer so that adding a listener after the previously last listener has canceled still works.