2017-01-18 1 views
0

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); 
     } 
     }); 
    } 

Répondre