Domanda

Così ho un TimerTask task chiamare una funzione onTimerComplete() nella sua run()

onTimerComplete() simile a questa:

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

faccio un Timer t ed io programmo il TimerTask con t.schedule(task, 2000);

Il problema è che quando il timer è alto e l'attività viene eseguita la mia onTimerComplete() ma tale funzione non termina. Si corre myFunc1() ma non finisce mai è né mai chiama myFunc2()

Tuttavia, se chiamo direttamente onTimerComplete(), tutto funziona.

Qual è il problema qui?

È stato utile?

Soluzione

Se myFunc1() inizia, ma non finisce mai, allora è molto probabile che il problema è in quella funzione.

È necessario essere consapevoli del fatto che questa funzione sarà chiamato in un thread separato. V'è la possibilità che ci sia un qualche tipo di interazioni indesiderate tra due thread. ( Descrizione qui .)

Se myFunc1() utilizza alcune variabili che vengono utilizzate anche in altre attività concorrenti, potrebbe essere necessario sincronizzare le parti del codice. Il concorrenza esercitazione potrebbe aiutare a capire ciò che il problema è, e come risolvere il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top