【发布时间】:2016-12-11 22:37:17
【问题描述】:
所以事情就是这样。在我的 firebase 面板中,我收到了有关我的 Android 应用程序中出现以下 NullPointerException 的报告:
Exception java.lang.NullPointerException: Attempt to invoke interface method 'float com.badlogic.gdx.Graphics.getDeltaTime()' on a null object reference
blue.rtrngames.papersorcery.PaperSorcery.render (PaperSorcery.java:86)
有问题的行只是我的渲染方法的第一行,如下所示:
@Override
public void render()
{
tick(Gdx.graphics.getDeltaTime()); // <- this is the line
所以 Gdx.graphics 在那里是空的。这种情况只发生在大约 1% 的用户身上,发生在刚启动后,即使这样似乎也完全罕见,而且并非每次都发生。我无法重现此崩溃;它根本不会发生在我身上。
我该怎么办?我无法想象仅仅实现一个空检查会在这里有所帮助,因为如果 Gdx.graphics 为空,肯定会出现问题?我想游戏只会呈现黑屏或某事。一直这样吗?
【问题讨论】:
-
您是否尝试过实施空值检查并查看它是否有效?
-
当你看到这样的空静态时,问题通常是初始化库和在某处使用它之间的竞争条件。我会对此进行一些检查,并尝试确保初始化首先完成,或者渲染在使用它之前检查它的初始化。
-
@Aaron 我会,但问题是我看不到用户会得到的结果。如果游戏则继续渲染黑屏或某事。像那样,我宁愿让他们崩溃并重新启动游戏,这样它就可以工作了。
-
啊,遗憾的是我对 Android 开发的了解不够,无法提供帮助,抱歉:/
-
你能展示你的 AndroidLauncher 类吗?您是否直接使用 Threads 做任何事情?
标签: java android nullpointerexception libgdx