1

我正在使用 google 提供的 GameHelper 类进行...游戏:

https://github.com/playgameservices/android-samples/blob/master/BaseGameUtils/src/com/google/example/games/basegameutils/GameHelper.java

每次调用 onStart() 时,实现都会尝试重新连接,弹出一个模态进度窗口。当 onStop() 被调用时,连接被关闭。

这意味着每当用户启动应用程序,或导航到另一个活动并返回到我们的主活动时,他们都会弹出一个模态进度对话框。

有没有人找到使用谷歌提供的代码更优雅地做到这一点的方法?我认为只需向一侧呈现一条小消息就足够了,例如“正在登录...”,而不是在登录完成之前阻止用户。让这个库在应用程序级别而不是活动级别工作也很好 - 现在如果您不希望 onStop() 方法断开连接,则必须将整个应用程序填充到一个活动中。

谢谢

- - - - - - - - - 更新 - - - - - - - - -

我只是从 BaseGameActivity 扩展而来,它调用 GameHelper。这是 onStop() 在 GameHelper.java 中的样子:

/** Call this method from your Activity's onStop(). */
public void onStop() {
    debugLog("onStop: disconnecting clients.");

    // disconnect the clients -- this is very important (prevents resource
    // leaks!)
    killConnections(CLIENT_ALL);

    ...

https://github.com/playgameservices/android-samples/blob/master/BaseGameUtils/src/com/google/example/games/basegameutils/GameHelper.java#L313

因此,当我的活动(恢复活动或再次启动应用程序)对 onStart() 进行相应调用时,它必须再次通过连接过程:

https://github.com/playgameservices/android-samples/blob/master/BaseGameUtils/src/com/google/example/games/basegameutils/GameHelper.java#L290

最终会弹出进度对话框。当然,这只发生在您之前登录过的情况下。

没有其他人看到吗?进度对话框在消失之前只弹出一瞬间。这是我的活动:

public class ActivityMain extends BaseGameActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        enableDebugLog(true, "###");

        Button btn = (Button)findViewById(R.id.btn);
        btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                beginUserInitiatedSignIn();
            }
        };
    }

    @Override
    public void onSignInFailed() {
        Log.e("###", "onSignInSucceeded()…");
    }

    @Override
    public void onSignInSucceeded() {
        Log.e("###", "onSignInSucceeded()…");
    }
}  
4

1 回答 1

0

You can first, without breaking the signin-flow, remove any occurrence related to ProgressDialog or simply shortcircuit the showProgressDialog method in GameHelper.java.

Then in your activity, you can handle yourself "what to do/what to show" if you mainly override beginUserInitiatedSignIn, onSignInFailed and onSignInSucceeded.

于 2013-07-06T10:26:28.003 回答