Question

J'ai donc TimerTask task appeler une fonction onTimerComplete() dans son run()

onTimerComplete() ressemble à quelque chose comme ceci:

private void onTimerComplete(){
  myFunc1();
  myFunc2();
}

Je fais un Timer t et je planifie la TimerTask avec t.schedule(task, 2000);

Le problème est, lorsque la minuterie est en exécution de la tâche, mais mon onTimerComplete() cette fonction ne se termine pas. Il fonctionne myFunc1() mais ne finit jamais elle ni ne jamais appeler myFunc2()

Cependant, si je l'appelle directement onTimerComplete(), tout fonctionne.

Quelle est l'affaire ici?

Était-ce utile?

La solution

Si myFunc1() démarre, mais ne se termine jamais, alors il est fort probable que le problème est dans cette fonction.

Vous devez être conscient que cette fonction sera appelée dans un thread séparé. Il y a la possibilité qu'il y ait une sorte d'interaction indésirable entre deux threads. ( Description de ici.)

Si myFunc1() utilise des variables qui sont également utilisés dans d'autres activités simultanées, vous devrez peut-être synchroniser les parties de votre code. pourrait concurrency vous aider à travailler à ce que le problème et comment le résoudre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top