Compatibilità con telefonini non samsung

Ho creato un'applicazione che gira perfettamente su telefonini Samsung, ma su altre marche si blocca sulla prima schermata e la risposta è "l'applicazione non risponde". Qualcuno sa dirmi perché e, ancor più importante, cosa fare per risolvere il problema.
Grazie

Uploading: BlocchiIniziali.jpg…
Questi sono i blocchi iniziali. L'app si blocca sulla prima schermata dicendo "l'APP non risponde". Ho provato a by passare la schermata iniziale, ma si blocca sulla successiva dando sempre la stessa risposta "l'APP non risponde"

Please upload your screenshot again
Taifun

It would have been nice to switch the language to English before taking a screenshot
I can't see something strange in these blocks

Use logcat to find out what's going on

Taifun

Solo per chiudere la discussione ho trovato il problema! Si trattava di una procedura che andava in loop. Tuttavia, mi domando, perché con i telefonini SAMSUNG funziona e con altre marche no?
Allego il blocco che causava il loop e il blocco con il quale ho aggirato il problema.
Blocco che genera il loop


Blocco con il quale ho aggirato il problema

Ciao @CARPAS,
beh, il primo screenshot, quello con il while, resta sicuramente bloccato per sempre in tutti i giorni della settimana, a meno che sia Domenica (tra l'altro, il sistema operativo deve essere impostato in Italiano altrimenti, se i giorni sono in Inglese, non verrà mai fuori, neanche la Domenica).
Il secondo flow, invece avendo un for, finiti i 7 loop, esce comunque, oppure esce prima se incontra la Domenica prima di arrivare a 0 nel for.
Bisogna sempre stare attenti al while, perché potrebbe scatenare dei loop infiniti. Ovvero sarebbe meglio mettere una "scappatoia" anche nei while, tipo un contatore a scalare (magari lo fai partire comunque molto in alto), che permetta di uscire dal while anche se la condizione cercata non è trovata. Quindi in uscita dal while, si controlla il contatore: se = 0 allora vuol dire che la condizione non è stata trovata e agisci di conseguenza. Se invece il contatore non è = 0 vuol dire che la condizione è stata trovata.
Il perché col Samsung vada e con altre marche no, può darsi che il sistema operativo sia in lingua diversa (su quelli dove non va). Oppure nel Samsung abbiano implementato una gestione dei timeout di Android diversi, non lo so. Sicuramente però vale quanto ti ho detto sopra: il primo while è "rischioso" per non dire sbagliato.
Ciao !
PS un'ultima cosa: nel confrontare i testi (text) non usare la mai ricerca "per =", ma usa il "if contains" perché basta uno spazio, un carattere non stampabile, tipo il linefeed o il carriage return, che il match non verrà mai trovato e ti darà sempre "false". (trucchi da vecchio softwarista.....) Ri-ciao

Grazie per le dritte che mi hai dato. Tuttavia, ti dirò che non amo particolarmente il WHILE (sono anch'io un vecchio softtwarista VB) proprio perché sono pericolosi. In questo blocco l'ho usato in primis per sperimentarlo, e visto che funzionava, non me ne sono più preoccupato. E' stato solo quando l'applicazione è stata usata da un'altra marca di telefonino che è nato il problema. Ho dovuto "smontare" letteralmente l'applicazione per capire dove si annidava il loop incriminato.

OK quindi tra vecchi softwaristi ci si capisce ! (io ho cominciato con il Fortran IV...quindi fai in fretta a capire quanti "..anta" :rofl: :rofl: :rofl: mi pesano sul groppone).
Se fosse un software embedded potresti usare un watchdog, magari in interrupt, ma qui il flow lavora in single thread, quindi resti bloccato per sempre se un while si pianta. Anche gli eventi (e tu da programmatore VB li conosci bene!) restano "pending".

Comunque il dubbio sull'anomalia del funzionamento differente a seconda delle marche, resta. Bisognerebbe vedere se ci sono differenze nella release del SO (i.e. quale versione di Android), ma se con il "for" funziona, non andrei a scervellarmi. Qui sul forum ci sono "guru" ben più esperti di me su Android e magari a qualcuno si accende la lampadina.
Ciao!

Io credo che la soluzione l'hai data nel post precedente e cioè quando dici che il sistema operativo utilizzi una diversa lingua. Pensandoci bene, questo fatto potrebbe creare un diverso tipo di problema, e cioè uscire dal ciclo FOR ma non soddisfare la condizione di "Domenica", per cui dovrò usure non il testo, ma il numero del giorno della settimana (così sarò sicuro che funziona anche su sistemi operativi che usano una lingua diversa). Mi ha fatto proprio bene questa discussione. Grazie a te.

1 Like