Habe so etwas auch mal als Service geschrieben, aber ohne Thread mit Sleep.
Habe dazu den AlarmManager genutzt.
In diesem Beispiel ruft er alle 5 Minuten die onReceive auf
Die beiden Methoden Repeat und Cancel kann man natürlich auch in die UpdateService Klasse aufnehmen und von da aus starten
public class UpdateService extends Service {
BroadcastClass broadcaster;
@Override
public void onCreate(){
broadcaster = new BroadcastClass();
broadcaster.RepeatUpdate(this);
}
@Override
public void onDestroy(){
broadcaster.CancelAlarm(this);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Alles anzeigen
public class BroadcastClass extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//Wird aufgerufen
}
public void RepeatUpdate(Context context) {
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, BroadcastClass.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 5 , pi);
}
public void CancelAlarm(Context context) {
Intent intent = new Intent(context, BroadcastClass.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
}
Alles anzeigen