Android Firebase检查用户是否关闭应用程序或断开连接

时间:2018-09-03 08:56:15

标签: android firebase firebase-realtime-database

我有一个可以正常使用的多人游戏(测验)。我有一个游戏计时器(在e.x 90秒后结束),我有一个后退方法(如果玩家按下后退按钮,他就会放松并得分为0)。

我的问题是,如果两个玩家之一关闭了应用程序(或什至处于撤退状态),该如何发送消息游戏结束并进入获胜活动?展示游戏创建代码很有用:

private void initializeGameModel() {
        mGameModel = new GameModel();
        mGameModel.setId(mGameWaitModel.getId());
        mGameModel.setGameMaster(getPlayerModel(true));
        mGameModel.setGameSlave(getPlayerModel(false));
        mGameModel.setGenerateNewQuestion(true);
        mGameModel.setDidGameEnd(false);
        LOGD(TAG, "Game Model initialized");
    }

和Firebase初始化:

private void initializeFirebase() {
        mGameFirebase = FirebaseDatabase.getInstance()
                .getReferenceFromUrl(Constants.FIREBASE_BASE_URL + Constants.FIREBASE_TEST_PATH + Constants.FIREBASE_GAME_ACTIVE_PATH + mGameWaitModel.getId());
        mGameFirebase.setValue(mGameModel);
        mGameFirebase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                mGameModel = dataSnapshot.getValue(GameModel.class);
                if (mGameModel == null) {
                    return;
                }
                try {
                    if (mGameModel.isGenerateNewQuestion()) {
                        mGameModel.getGameMaster().setDidPlayerAnswer(false);
                        mGameModel.getGameMaster().setPlayerAnswerCorrect(false);
                        mGameModel.getGameSlave().setDidPlayerAnswer(false);
                        mGameModel.getGameSlave().setPlayerAnswerCorrect(false);


                    }
                    if (isGameMaster() && mGameModel.isGenerateNewQuestion()) {
                        generateNewQuestion();
                        mGameModel.setGenerateNewQuestion(false);
                        mGameFirebase.setValue(mGameModel);
                        return;
                    }

实际上,我需要的是当两个用户之一撤退时,关闭应用程序(按“主页”按钮)游戏(对于两个用户)都结束,并使用代码进行最终游戏。

在此先感谢您的帮助和努力!

2 个答案:

答案 0 :(得分:0)

您可以使用composer showonPause函数在firebase中将DidGameEnd属性设置为true。如果将侦听器添加到DidGameEnd属性,则如果其中一个用户暂停了该应用程序或退出了该应用程序,则可以通知其他用户,因为您将在其他用户应用程序中更改该属性。

答案 1 :(得分:0)

您可以通过以下方式进行操作:

onPauseonResume(按主页按钮),

onCloseonDestroy(以检测应用程序销毁/关闭),

onBackPressed(两个用户撤退)