2017-04-07 2 views
0

J'essaie d'implémenter un exemple de programme dans lequel je veux que le toast soit affiché toutes les 10 secondes. Mais la méthode schedule n'est exécutée qu'une seule fois. Y a-t-il une solution? Voici mon codeLa planification de l'exécuteur de programme ne s'exécute qu'une fois

MainActivity public class étend AppCompatActivity {

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ScheduledExecutorService scheduledExecutorService= Executors.newScheduledThreadPool(1); 
    scheduledExecutorService.schedule(new Runnable() { 
     @Override 
     public void run() { 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        Toast.makeText(getApplicationContext(), "Hello Schedule", Toast.LENGTH_LONG).show(); 
       } 
      }); 
     } 
    }, 
    10, TimeUnit.SECONDS); 

} 

}

Répondre

0

Lisez la documentation sur la différence entre ScheduledExecutorService#schedule() et ScheduledExecutorService#scheduleAt*

+0

S'il vous plaît pouvez-vous suggérer la solution. – user7144720

0

Vous devriez rechercher scheduleAtFixedRate méthode .

scheduleAtFixedRate: crée et exécute une action périodique qui devient activé première après le délai initial donné, et ensuite avec la période donnée; , c'est-à-dire que les exécutions vont commencer après le délai initial, puis initialDelay + période, puis initialDelay + 2 * période, et ainsi de suite. Documentaion

Exemple

ScheduledExecutorService scheduledExecutorService; 
    scheduledExecutorService = Executors.newScheduledThreadPool(1); 
    scheduledExecutorService.scheduleAtFixedRate(new Runnable() { 
     @Override 
     public void run() { 
      Toast.makeText(getApplicationContext(),"Hello Schedule",Toast.LENGTH_LONG).show(); 
     }},2,10,TimeUnit.SECONDS);