如何在一个关闭了应用程序的应用程序中创建一个倒数计时器?

时间:2019-05-24 10:19:34

标签: java android time

我正在创建一个游戏,该游戏使用“能量点”作为货币来执行游戏中的某些动作(您必须花费能量点来完成某些任务)。当玩家达到零能量点或没有足够的能量来执行某项任务时,我应该等待几个小时才能继续,或者观看视频以获取一些快速点。

它应该具有以下功能:

我使用以下代码创建了PopupDialog。如果条件为showPopupDialog(),自然会调用函数energyCost < energyPoints

 public void showPopupDialog(){
        AlertDialog.Builder dialog = new AlertDialog.Builder(this);
        dialog.setTitle("Not Enough Energy!");
        dialog.setMessage("You don't have enough Energy Points to do this! 
 Would you like to watch a video to get more Energy?");
        ((AlertDialog.Builder) dialog).setPositiveButton("Watch", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //ad plays here  
                energyPoints = energyPoints + 500;
                ep.setText(energyPoints+"");
            }
        });
        ((AlertDialog.Builder) dialog).setNegativeButton("Wait", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                new CountDownTimer(30000, 1000) {

                    public void onTick(long millisUntilFinished) {
                    }

                    public void onFinish() {
                        energyPoints = energyPoints+500;
                        ep.setText(energyPoints+"");
                    }
                }.start();
            }
        });
        dialog.show();

    }

我想知道如何进行以下修改:

  • 即使该应用已关闭,或者我离开了活动,倒数计时器也应该持续。这样,当我在4个小时后回来时,一些能量点就会恢复。

  • 当当前计时器正在进行时,您无法单击“等待”(因此触发另一个计时器)。您必须等待分配的时间,然后才能再次单击它。

  • 等待结束后,游戏会发送一条通知,让玩家知道会继续。

2 个答案:

答案 0 :(得分:0)

准确地说,最简单的方法是服务器/客户端交互,因此您不能仅仅通过将时间设置为4h来操纵时间。

如果您可以进行操作-只需读取/写入外部文件中设置的最新时间即可。

答案 1 :(得分:0)

在不了解很多代码的情况下,我将提出一个概念。

将计时器本身用于演示目的,但出于真实的工作逻辑,请创建“最后添加的时间戳”之类的时间戳。

这将使您每次需要使用时,可以显示或获取实际点,获取最后的时间戳,将其与当前时间进行比较,然后采取相应的措施。例如,我检查最后一个,比较时,相差3h。如果每10分钟我有5分,那么我将获得3 * 60/10 * 5 =总得分。

这将使您只关注时间已过去的事实,而不是创建计时器。

然后,当应用程序关闭时,您将存储上一个时间戳,并在重新打开时再次进行比较,并采取相应的措施。