Android 每5分钟添加一次值并重置textview

Android 每5分钟添加一次值并重置textview,android,Android,我是Android的初学者。我发明了一个计时器,它能工作。我添加了一个新函数(每5分钟文本视图中显示一个值1000,10分钟后需要2000)。此功能可以工作,但如果我单击按钮退出并重新打开计时表,5分钟后该值将继续增加到以前的值,但我希望在单击退出后重置此值。我用过 finish();handler.removeCallbacks(null);处理程序。后延迟(测试,100)但它似乎不起作用。谢谢 btnStart.setOnClickListener(new View.OnClickListe

我是Android的初学者。我发明了一个计时器,它能工作。我添加了一个新函数(每5分钟文本视图中显示一个值1000,10分钟后需要2000)。此功能可以工作,但如果我单击按钮退出并重新打开计时表,5分钟后该值将继续增加到以前的值,但我希望在单击退出后重置此值。我用过
finish();handler.removeCallbacks(null);处理程序。后延迟(测试,100)但它似乎不起作用。谢谢

btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (lastPause != 0) {
                    chronometer.setBase(chronometer.getBase() + SystemClock.elapsedRealtime() - lastPause);
                } else {
                    chronometer.setBase(SystemClock.elapsedRealtime());
                }

                chronometer.start();
                suppl();
                btnStart.setEnabled(false);
                btnStop.setEnabled(true);
                btnExit.setEnabled(false);
            }
        });

        btnStop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                chronometer.stop();
                onPause();
                lastPause = SystemClock.elapsedRealtime();
                btnStop.setEnabled(false);
                btnStart.setEnabled(false);
                btnExit.setEnabled(true);
            }
        });

        btnExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
                handler.removeCallbacks(null);
                handler.postDelayed(test, 100);


            }
        });
    }


Handler handler = new Handler();
    Runnable test;
    public void suppl() {

        test = new Runnable() {
            @Override
            public void run() {
                count += 1000;
                tprice.setText(String.valueOf(count));
                handler.postDelayed(test, 5000);
            }
        };
        handler.postDelayed(test, 5000);

    }


    public void onPause() {
       super.onPause();
       if (handler != null)
           handler.removeCallbacks(test);


    }
为此,我建议使用一种新的方法

使用time task时,您可以使用计时器上的
cancel()
取消所有挂起的任务


如果您对此解决方案有任何疑问,请告诉我。

改用倒计时

 CountDownTimer CD = new CountDownTimer(11000, 1000) {

                public void onTick(long millisUntilFinished) {
                    xo = (int) (millisUntilFinished / 1000);

                    secondsleftimg.setText("seconds remaining: " + millisUntilFinished / 1000);
试试这个:

替换这一行代码:

 handler.removeCallbacks(null);
为此:

   handler.removeCallbacksAndMessages(null); // it will remove all hadler


    btnExit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           focus.setBase(SystemClock.elapsedRealtime());
          handler.removeCallbacksAndMessages(null);
           lastPause= 0;
        }
    });

使用
FLAG\u Activity\u NEW\u TASK启动活动,或添加
android:launchMode=“singleInstance”
AndroidManifest
中,您要做的就是重置计时器时间。如果我错了,请更正我?我想重置指针我的计时器重置成功,但不是handler@jose因为在处理程序中传递null,所以需要在removecallback()中传递可运行的。如果仍然面临问题,请告诉我。您可以举一个例子,我搜索了,但没有任何效果。我无法重置时间。我在btnExit中执行“tprice.setText(String.valueOf(count-=count));”操作,谢谢