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



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

mConnectionResult.startResolutionForResult(mActivity, RC_RESOLVE);
mActivityonStop()上为空
GameHelper.java是否有错误,并且如果在调用onConnectionFailed()之后发生onStop(),则可能会崩溃?
谢谢。

编辑:
在更新到最新的Play API(rev 15)和更新的GameHelper.java之后,它发生了。

最佳答案

编辑:

现在,此问题已在最新的GameHelper版本中修复:
https://github.com/playgameservices/android-samples/commit/e7b3758c136b5b434f1dfd9ca8c03f75aad70f09

旧答案:

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

因此,当您离开自己的 Activity 以登录 Activity 时,它调度onStop事件,并且由于用户启动的过程而无法连接,该过程是可解决的,因此会发生错误。

因此,我的快速技巧正在发生变化:

catch (SendIntentException e)

简单地
catch (Exception e)

因此它也会捕获Null指针异常
当然,在这种情况下,注册过程可能不会继续进行,因此我启动了另一个操作的重新登录,目前看来,它可以正常工作。

更彻底的黑客尝试在 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/

10-09 04:41