Welche Lösung Sie verwenden, hängt davon ab, wie lange Sie zwischen den einzelnen Ausführungsvorgängen Ihrer Funktion warten müssen.
Wenn Sie länger als 10 Minuten warten, würde ich vorschlagen, dass Sie AlarmManager
.
// Some time when you want to run
Date when = new Date(System.currentTimeMillis());
try {
Intent someIntent = new Intent(someContext, MyReceiver.class); // intent to be launched
// Note: this could be getActivity if you want to launch an activity
PendingIntent pendingIntent = PendingIntent.getBroadcast(
context,
0, // id (optional)
someIntent, // intent to launch
PendingIntent.FLAG_CANCEL_CURRENT // PendingIntent flag
);
AlarmManager alarms = (AlarmManager) context.getSystemService(
Context.ALARM_SERVICE
);
alarms.setRepeating(
AlarmManager.RTC_WAKEUP,
when.getTime(),
AlarmManager.INTERVAL_FIFTEEN_MINUTES,
pendingIntent
);
} catch(Exception e) {
e.printStackTrace();
}
Sobald Sie die oben genannten Informationen gesendet haben Intent
können Sie Ihre Intent
durch die Einführung eines BroadcastReceiver
. Beachten Sie, dass dies entweder in Ihrem Anwendungsmanifest oder über die context.registerReceiver(receiver, intentFilter);
Methode. Für weitere Informationen über BroadcastReceiver
entnehmen Sie bitte der offiziellen Dokumentation. .
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
System.out.println("MyReceiver: here!") // Do your work here
}
}
Wenn Sie kürzer als 10 Minuten warten, würde ich vorschlagen, eine Handler
.
final Handler handler = new Handler();
final int delay = 1000; // 1000 milliseconds == 1 second
handler.postDelayed(new Runnable() {
public void run() {
System.out.println("myHandler: here!"); // Do your work here
handler.postDelayed(this, delay);
}
}, delay);