Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中运行两个倒计时,同时暂停和恢复其他计时器_Android_Countdowntimer_Buttonclick - Fatal编程技术网

如何在Android中运行两个倒计时,同时暂停和恢复其他计时器

如何在Android中运行两个倒计时,同时暂停和恢复其他计时器,android,countdowntimer,buttonclick,Android,Countdowntimer,Buttonclick,我希望当我按下cdtimer 1的按钮时,它会继续,而其他暂停会继续,反之亦然。我试着用下面的代码来做。但另一个计时器也与正在运行的计时器并行运行。请帮助我暂停和恢复计时器,一次只运行计时器,另一次暂停 public void p1Start(View a) { if(flag==0) { p2.setTextColor(Color.parseColor("#ffffff")); p2.setBackgroundColor(Color.parseColor

我希望当我按下cdtimer 1的按钮时,它会继续,而其他暂停会继续,反之亦然。我试着用下面的代码来做。但另一个计时器也与正在运行的计时器并行运行。请帮助我暂停和恢复计时器,一次只运行计时器,另一次暂停

public void p1Start(View a)
{
    if(flag==0) {
        p2.setTextColor(Color.parseColor("#ffffff"));
        p2.setBackgroundColor(Color.parseColor("#00bcd4"));

        p1.setTextColor(Color.parseColor("#3f51b5"));
        p1.setBackgroundColor(Color.parseColor("#303F9F"));

        reverseTimer(300-1, p2);

        cd2.start();
        cd1.cancel();
        flag=1;
    }
}

public void p2Start(View b)
{
    if(flag==1) {
        p1.setTextColor(Color.parseColor("#ffffff"));
        p1.setBackgroundColor(Color.parseColor("#00bcd4"));

        p2.setTextColor(Color.parseColor("#3f51b5"));
        p2.setBackgroundColor(Color.parseColor("#303F9F"));

        reverseTimer(300-1, p1);

        cd1.start();
        cd2.cancel();
        flag=0;
    }
}

public void reverseTimer(long Seconds, final TextView tv){

     cd1 =  new CountDownTimer(Seconds* 1000+1000, 1000) {

        public void onTick(long millisUntilFinished) {
            s1=millisUntilFinished/1000;
            int seconds = (int) (millisUntilFinished / 1000);
            int minutes = seconds / 60;
            seconds = seconds % 60;
            tv.setText("" + String.format("%02d", minutes)
                    + ":" + String.format("%02d", seconds));
        }

        public void onFinish() {
            tv.setText("Completed");
        }
    };

    cd2 =  new CountDownTimer(Seconds* 1000+1000, 1000) {

        public void onTick(long millisUntilFinished) {
            s2=millisUntilFinished/1000;
            int seconds = (int) (millisUntilFinished / 1000);
            int minutes = seconds / 60;
            seconds = seconds % 60;
            tv.setText("" + String.format("%02d", minutes)
                    + ":" + String.format("%02d", seconds));
        }

        public void onFinish() {
            tv.setText("Completed");
        }
    };
}

而不是使用线程。通过使用处理程序将消息发布到主线程以在您希望的时间更新ui来实现这一点。对于暂停和恢复,请查看此链接ans-您基本上应该使用一个处理程序,一旦您希望它像@keyur9779所给出的那样停止,它将删除runnable