如何从特定片段中的活动中禁用onDestroy方法?



>我有一个包含多个片段的活动。当用户到达最后一个片段并单击按钮时,他会通过意图进入主活动。 这是一个多人测验应用程序,我需要更新数据库中的"回合"字段,该字段决定玩家 1 或 2 是否必须玩。此字段当前在以下情况下更新...

。玩家正常完成他的测验回合(通过单击最后一个片段上的下一步按钮(

。玩家在游戏过程中单击手机的后退按钮(它会打开一个AlertDialog因此当玩家选择返回主活动时,这将触发"更新回合字段方法"(

必须有第三个选项来更新回合字段,这就是场景:玩家开始他的回合,但在回合期间关闭应用程序。这意味着目前我的数据库中的"turn"字段没有更新,这意味着在我的代码中,两个玩家都无法恢复游戏。我想通过在用户决定关闭应用程序时更新转弯字段来避免这种情况。

在片段中,当用户意外关闭应用程序时,有一个仍在运行的ProgressBar,我在片段的onStop方法中执行此操作。因此,我无法在活动中调用onStop方法来更新数据库中的字段,所以我想知道是否有办法在不调用 onStop 方法的情况下实现我想要的结果。

这是我的活动,我目前有在onDestroy方法中更新Firestore中某些字段的方法:

...
// When the user clicks the phones back button during the game an alert window opens to aks if he is sure to exit the game
public void onBackPressed() {
AlertDialog();
}
public void AlertDialog() {
yes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
closeGame();
Intent i = new Intent(GameActivity.this, MainActivity.class);
startActivity(i);
finish();
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
updateGameStatus();
}
protected void updateGameStatus() {
collectionRef.document(gameId).collection("Round").document("Round").update("round", roundValue + 1)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
}
});
}
...

有没有达到我想要的结果的好方法?

如果您需要其他信息,请告诉我。

我非常感谢任何提示!

由于无法在特定片段上禁用 onDestroy,因此我围绕保存片段的活动的onDestroy方法安排了我的代码逻辑。

最新更新