Co oznacza "zwykłą klasę" - bo z tego co wiem, to w androidzie czegoś takiego nie ma - system za to może uruchomić coś co dziedziczy po:
Activity
Service
(parę jeszcze, ale tutaj akurat nie ważne)
Jeżeli nasłuchujesz z poziomu activity, to w momencie przejścia do backgroundu, activity jest niszczona (albo i nie, ale nie masz na to wpływu)
Jeżeli chcesz aby twój kod działał cały czas, to musisz użyć serwisu (Service). Również w tym przypadku system może go ciachnąć w przypadku braku pamięci. Można zmniejszyć ryzyko usunięcia serwisu przez system, używając odpowiednio do wersji systemu:
setForeground(true); do 1.6 włącznie
startForeground(nie pamiętam parametrów); od wersji 2.0(chyba)
W dokumentacji tych metod masz opisane jak ich użyć w sposób uniwersalny