Możesz to rozwiązać na dwa sposoby, w zależności od tego który preferujesz.
Bardziej javowy, to stworzenie niezależnego wątku, który będzie sobie w pętli spał i wykonywał async taska, a następnie wykonywał na wątku GUI aktualizację GUI, chyba że takowej aktualizacji nie masz, to będzie robił coś tam co chcesz.
Bardziej androidowy, to użycie np. alarmów . Alarmy mają plus działania "poza" aplikacją, więc również wtedy kiedy nie jest ona w ogóle włączona. W tym przypadku jednak nie zapomnij dodać alarmu do OnBootCompleted listenera, i zadeklarować, że twoja aplikacja odpala się przy boocie systemu.
Autostart
Alarm
Threadów używasz jeśli ten twój task ma działać tylko wtedy, kiedy user używa aplikacji, alarmów możesz użyć również wtedy, kiedy ta aplikacja nie działa, ale są bardziej skomplikowane do zrozumienia. AOSP ma to ładnie opisane:
Note: For timing operations that are guaranteed to occur during the lifetime of your application, instead consider using the Handler class in conjunction with Timer and Thread. This approach gives Android better control over system resources.