我在GameHelper.java
中遇到以下崩溃:
我认为可能发生的唯一原因是,如果mActivity == null
位于GameHelper.java:752
:
mConnectionResult.startResolutionForResult(mActivity, RC_RESOLVE);
mActivity
在onStop()
上为空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/