J'ai le bloc de code suivant qui boucle pour vérifier la dernière fois que je l'ai vu, je souhaite l'arrêter et libérer des ressources une fois l'application désactivée au premier plan.Android Java: Comment supprimer complètement l'instance de ScheduledExecutorService lorsque l'application n'est pas au premier plan
Avec ce qui suit, le runnable ne s'arrête pas, il continue simplement.
ScheduledFuture<?> dfgh;
private void getLastSeen() {
AsyncTask.execute(new Runnable() {
@Override
public void run() {
ScheduledExecutorService scheduleTaskExecutor = Executors.newSingleThreadScheduledExecutor();
dfgh = scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
if (!Presence.screenLocked(A) && Presence.inForeground(A)) {
MessageHelper.getLastSeen(RECIPIENT, A);
System.out.println("Checking Presence");
} else {
System.out.println("App not in foreground or screen is locked");
dfgh.cancel(true);
//cancel here doesn't seem to cancel.
}
}
}, 0, 2, TimeUnit.SECONDS);
}
});
}