[Java] NullPointerExceptions solo su alcuni dispositivi Samsung Galaxy?


Answers

Question

Sto usando LibGDX. All'avvio della mia app, viene creata una schermata. Quando lo schermo è caricato, richiama una funzione statica Module.createStyles() .

Questa funzione crea una serie di stili che verranno utilizzati nel resto dell'applicazione (stili LibGDX incorporati come WindowStyle, LabelStyle, TextButtonStyle - tutti i tipi di cose utilizzate per creare gli oggetti dell'interfaccia utente).

Al termine dello schermo, chiama Module.disposeStyles() .

Ad ogni modo, secondo i miei rapporti sugli arresti anomali di Google Analytics, ottengo casualmente una NullPointerException quando provo , ad esempio, a creare una finestra di dialogo con Module.dialogStyle :

ExitDialog exitDialog = new ExitDialog("Are you sure?", Module.dialogStyle);

Thread: GLThread 2089, Exception: java.lang.IllegalArgumentException: style cannot be null.
at package.Window.setStyle(Window.java:181)
at package.Window.<init>(Window.java:63)
at package.Dialog.<init>(Dialog.java:65)
at package.ExitDialog$1.<init>(ExitDialog.java:38)

Non c'è assolutamente alcuna ragione per cui Module.dialogStyle debba essere nullo. L'unico posto in cui viene Module.disposeStyles() questo campo è in Module.disposeStyles() e questa funzione viene richiamata solo in un punto specifico dell'applicazione (alla fine).

Immagino che questo sia stato un bug nel mio codice in qualche modo, anche se il 95% degli utenti non lo ha mai sperimentato. Tuttavia, tutti i 5% che fanno esperienza sembrano essere utenti Galaxy e non sono sicuro che sia una coincidenza:

  • Galaxy s4
  • Galaxy S III
  • GALAXY Tab 3 lite

Qualcuno ha qualche idea? I dispositivi Galaxy non dispongono di un gestore RAM incorporato? Avrebbe qualcosa a che fare con questo?