Frage

So habe ich ein TimerTask task eine Funktion onTimerComplete() in seiner run() Aufruf

onTimerComplete() sieht etwa so aus:

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

Ich mache einen Timer t und ich plane den TimerTask mit t.schedule(task, 2000);

Das Problem ist, wenn der Timer und die Aufgabe ausgeführt wird meinen onTimerComplete() aber diese Funktion nicht beendet. Es läuft myFunc1() aber nie beendet es auch nicht immer nennen myFunc2()

Allerdings, wenn ich rufe onTimerComplete() direkt, alles funktioniert.

Was ist der Deal hier?

War es hilfreich?

Lösung

Wenn myFunc1() beginnt, aber nie beendet, dann ist es sehr wahrscheinlich, dass das Problem in dieser Funktion ist.

Sie müssen sich bewusst sein, dass diese Funktion wird in einem separaten Thread aufgerufen werden. Es besteht die Möglichkeit, dass es irgendeine Art von unerwünschter Wechselwirkung zwischen zwei Threads ist. ( Beschreibung hier .)

Wenn myFunc1() einige Variablen verwendet, die auch in anderen gleichzeitigen Aktivitäten verwendet werden, können Sie die zu synchronisierenden Teilen des Codes benötigen. Die Gleichzeitigkeit Tutorial könnte Ihnen helfen, arbeiten, was die Problem ist, und wie man es beheben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top