Java ME applicazione in esecuzione bene in Emulatore ma crash quando schierato a N70. Un modo per individuare il motivo di crash?

StackOverflow https://stackoverflow.com/questions/2776347

  •  03-10-2019
  •  | 
  •  

Domanda

ho sviluppato un'applicazione Java ME per la piattaforma CLDC. Funziona bene quando eseguito in un emulatore. Ma quando schiero al mio telefono N70 l'applicazione non si avvia al tutto nel telefono. Nella mia applicazione ci sono alcune classi 14 e sono la creazione di un'istanza di ciascuno e di metterli nel vettore all'avvio dell'applicazione. Le classi hanno solo una variabile e 2 metodi. Può questa creazione di molti casi essere la ragione per la sua crash?

C'è un modo per scoprire il motivo per cui l'applicazione non è in grado di avviare nel telefono?

Aggiornamento: La sua raffinata esecuzione sul emulatore. E un'altra cosa che vorrei menzionare è che- Il codice smette di esecuzione solo nel punto in cui sono la creazione di quei 14 casi e aggiungendoli al vettore. Fino a quel punto il codice esegue bene.

È stato utile?

Soluzione

Potrebbe dipendere da dove il codice che si sta creando quelle istanze. Se si sta creando nel vostro costruttore di MIDlet o il metodo startApp prova a spostare l'inizializzazione nel metodo run dell'applicazione.

Un modo di debug di applicazioni J2ME che non iniziano al telefono è con l'aggiunta di messaggi di debug stile "printf" nel codice da scrivere nel sistema negozio di dischi e l'aggiunta di un altro MIDlet alla vostra applicazione per leggere da RMS e di visualizzazione quei messaggi. Oppure si può semplicemente lasciare un commento, pezzi di codice e vedere se funziona.

Altri suggerimenti

È possibile eseguire il debug sul dispositivo. Se l'emulatore si sta utilizzando è parte della Nokia SDK allora non ci dovrebbero essere strutture altrove per svolgere test e debug on-device. (I avrei posto più in dettaglio su questo, ma ho fatto solo questo con i telefoni Sony Ericsson di recente.)

Un'altra opzione è quella di utilizzare il strumenti Nokia che consentono di visualizzare l'output standard e l'errore per l'applicazione quando è in esecuzione sul vostro dispositivo (tramite Bluetooth per esempio).

La probabilità che l'applicazione è in realtà blocca Virtual Machine filo bytecode interprete Java e che chiude l'intero processo nativo è molto piccolo.

E 'accaduto prima, ma è necessario eliminare diversi altri potenziali problemi prima di essere convinto di un incidente reale.

E 'più probabile che sia:

  • Il tuo MIDlet non viene creato o non avviato perché il runtime MIDP decide che non è corretto.
    o
  • Il tuo MIDlet getta semplicemente un'eccezione che non si cattura, che può far sembrare che è stato brutalmente interrotto.

Dal momento che il programma di installazione MIDlet è supposto per impedire l'installazione di una cattiva MIDlet, la questione eccezione non rilevata è più probabile.

Come trovare un'eccezione non rilevata:

  • Inizia con il più semplice HelloWorld MIDlet, utilizzando un Form in modo da poter inserire facilmente più StringItems nella parte superiore dello schermo.
  • Crea e iniziare una nuova Thread in MIDlet.startApp()
  • Nella tua forzatura dei Thread.run(), aggiungere un blocco try{}catch(Throwable){}.
  • All'interno quel blocco, fare tutto ciò che l'originale MIDlet ha fatto.
  • Utilizza il modulo come il vostro standard output per il debug.

È possibile utilizzare la registrazione modulo per assicurarsi che non si immette un ciclo infinito, per classi di eccezioni di visualizzazione e messaggi, a bandiera tappe logiche, per visualizzare i valori delle variabili ...

Questo è il primo passo per capire cosa sta succedendo.

Ho anche affrontato un problema simile e quando ho ricompilato il mio MIDlet come Midlet 1.0 allora ha funzionato bene. Sembra N70 non è in grado di eseguire la nuova versione di MIDlet. Penso che il downgrade e ri-prova la vostra midlet.

Saluti

Junaid

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