gpt4 book ai didi

android - GameHelper 在 onConnectionFailed() 上崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:50 26 4
gpt4 key购买 nike

我在 GameHelper.java 中遇到以下崩溃:

[main] java.lang.NullPointerException at com.google.android.gms.common.ConnectionResult.startResolutionForResult(Unknown Source) at com.google.example.games.basegameutils.GameHelper.resolveConnectionResult(GameHelper.java:752) at com.google.example.games.basegameutils.GameHelper.onConnectionFailed(GameHelper.java:729)

我认为这可能发生的唯一原因是如果 GameHelper.java:752 处的 mActivity == null:

mConnectionResult.startResolutionForResult(mActivity, RC_RESOLVE);

mActivityonStop() 上获取 null如果 onConnectionFailed() 发生在 onStop() 被调用之后,GameHelper.java 是否有可能有错误并且会崩溃?谢谢。

编辑:它发生在更新到最新的 Play API(修订版 15)以及更新的 GameHelper.java 之后。

最佳答案

编辑:

这个问题现在已经在最新的 GameHelper 版本中得到修复: https://github.com/playgameservices/android-samples/commit/e7b3758c136b5b434f1dfd9ca8c03f75aad70f09

旧答案:

对我来说,它发生在应用程序启动时,当 Google Play 服务要求我登录时,如果我点击取消,就会发生同样的错误。

所以当离开你自己的activity去登录activity时,它派发了onStop事件,并且由于用户启动的进程而无法连接,这是可以解决的,因此发生了错误。

所以我的快速技巧正在改变:

catch (SendIntentException e)

简单地

catch (Exception e)

所以它也会捕获空指针异常当然,在这种情况下,注册过程可能不会继续,所以我开始重新登录另一个操作,它现在似乎可以工作。

更彻底的破解可能是尝试在 Activity 开始时解决结果,为此我们定义了待处理的解决变量:

// Are we expecting the result of a resolution flow?
boolean mExpectingResolution = false;
boolean mPendingResolution = false;

然后在错误行上我们检查 Activity 是否不为空

if(mActivity != null)
mConnectionResult.startResolutionForResult(mActivity, RC_RESOLVE);
else
mPendingResolution = true;

开始时我们检查并尝试解决它:

if(mPendingResolution && mConnectionResult != null)
try {
mConnectionResult.startResolutionForResult(mActivity, RC_RESOLVE);
} catch (SendIntentException e) {
e.printStackTrace();
}

这应该会有所帮助,直到 lib 支持者的正式决议 :)

关于android - GameHelper 在 onConnectionFailed() 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22018987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com