Autore Topic: Crash dell' app  (Letto 631 volte)

Offline swet90

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Davide Antonelli
  • Sistema operativo:
    Windows 8
Crash dell' app
« il: 24 Aprile 2013, 11:12:20 CEST »
0
Ragazzi ho questo codice, non riesco a capire perché mi vada in errore :
Codice (Java): [Seleziona]
public void modalitalibera(){
        if (chkRecupero.isChecked()){
                        //parte il timer
                        res = timer(0);
                        while(res==1){
                         modalitalibera();}

        //altro codice
                }
praticamente, modalitalibera () chiama la funzione timer, che quando termina restituisce 1, io vorrei che , al termine di ogni timer mi venga eseguito // altro codice, e dopodiché di nuovo timer, e così via , fino ad una sentinella che fa terminare il programma.

Come posso fare?!

ecco il logcat :

Codice: [Seleziona]
04-24 11:02:09.185: E/AndroidRuntime(5535): FATAL EXCEPTION: main
04-24 11:02:09.185: E/AndroidRuntime(5535): java.lang.StackOverflowError
04-24 11:02:09.185: E/AndroidRuntime(5535):         at java.lang.ThreadLocal.get(ThreadLocal.java:53)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at android.os.Looper.myLooper(Looper.java:163)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at android.os.Handler.<init>(Handler.java:195)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at android.os.Handler.<init>(Handler.java:111)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at android.os.CountDownTimer$1.<init>(CountDownTimer.java:109)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at android.os.CountDownTimer.<init>(CountDownTimer.java:109)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie$4.<init>(ContaSerie.java:183)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.timer(ContaSerie.java:183)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:97)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.ContaSerie.modalitalibera(ContaSerie.java:99)
04-24 11:02:09.185: E/AndroidRuntime(5535):         at com.palestre.palestra.Co

Grazie
« Ultima modifica: 24 Aprile 2013, 11:20:13 CEST da swet90, Reason: Forgot LogCat »

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Crash dell' app
« Risposta #1 il: 24 Aprile 2013, 12:50:18 CEST »
0
StackOverflowError  :-o
Stai facendo una ricorsione pazzesca. Chiami modalitalibera dentro modalitalibera praticamente all'infinito.
E ogni volta assegni timer(0) a res.
// altro codice non verrà mai chiamato.
Una prima soluzione, SBAGLIATA ma che funziona, é questa:
Codice (Java): [Seleziona]
while(sentinella){
    timer(0);
    // altro codice
}
Questa schifezza funziona, ma ti blocca il thread UI se é nel thread UI che la esegui.
L'implementazione corretta prevede l'esecuzione in un thread separato, ad esempio con un AsyncTask.
Postate il LogCat LogCat LogCat LogCat LogCat