簡體   English   中英

NullPointerExceptions僅在某些Samsung Galaxy設備上嗎?

[英]NullPointerExceptions only on some Samsung Galaxy devices?

我正在使用LibGDX。 當我的應用啟動時,它將創建一個屏幕。 加載Screen時,它將調用靜態函數Module.createStyles()

此函數創建了一系列樣式,這些樣式將在應用程序的其余部分中使用(內置的LibGDX樣式,例如WindowStyle,LabelStyle,TextButtonStyle-用於創建用戶界面對象的所有類型的東西)。

完成屏幕后,它將調用Module.disposeStyles()

無論如何,根據我的Google Analytics(分析)崩潰報告,例如,嘗試使用Module.dialogStyle創建Dialog時,我會隨機獲得NullPointerException

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)

絕對沒有理由Module.dialogStyle應該為null。 我將此字段Module.disposeStyles() null的唯一位置是在Module.disposeStyles()並且僅在應用程序的一個特定位置(最后)調用此函數。

我會假設這是我代碼中的錯誤,即使95%的用戶從未遇到過。 但是,所有5%確實經歷過體驗的人似乎都是Galaxy用戶,而且我不確定這是否是巧合:

  • 銀河S4
  • 銀河S III
  • GALAXY Tab 3 lite

有人有想法么? Galaxy設備沒有內置的RAM管理器嗎? 這與這有關嗎?

我將假設:

Module.dialogStyle

是對Module類的static屬性的引用。

您可能會遇到Android如何管理JVM生命周期的副作用。 在某些情況下(尤其是在較大的設備上),將重新使用JVM實例可能會導致問題(例如,靜態初始化程序已經運行,並且不會重新運行)。 另外, static指針可能從您的應用程序的上一次運行到下一次運行,並且可能具有無效或不正確的狀態。 這取決於應用程序的組織方式。

如果您包含更多顯示初始化靜態字段的方式和時間的代碼,我們很可能會弄清楚。

有關不同生命周期以及如何在本地復制它們的更多詳細信息,請參見: http : //bitiotic.com/blog/2013/05/23/libgdx-and-android-application-lifecycle/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM