Android倒计时程序-onTick()don';重新打开应用程序后无法更新用户界面

Android倒计时程序-onTick()don';重新打开应用程序后无法更新用户界面,android,countdowntimer,Android,Countdowntimer,带有文本视图和开始/停止按钮的基本倒计时应用程序。 如果我在倒计时运行时关闭应用程序,它将继续工作,直到完成。问题是当我在应用程序倒计时时重新打开应用程序时,onTick()方法不会更新TextView的新实例。 有没有办法让这一切顺利进行 如果我理解正确的话,倒计时在它自己的服务中运行。 我的代码: 这是因为当用户单击按钮时,您启动了倒计时。对于it工作,您必须添加myTimer.start()。但请记住,它正在创建一个新的倒计时实例,这将从0开始计数。因此,您必须保存最后一次,然后从现在开始

带有文本视图和开始/停止按钮的基本倒计时应用程序。 如果我在倒计时运行时关闭应用程序,它将继续工作,直到完成。问题是当我在应用程序倒计时时重新打开应用程序时,onTick()方法不会更新TextView的新实例。 有没有办法让这一切顺利进行

如果我理解正确的话,倒计时在它自己的服务中运行。 我的代码:


这是因为当用户单击按钮时,您启动了倒计时。对于it工作,您必须添加
myTimer.start()。但请记住,它正在创建一个新的倒计时实例,这将从0开始计数。因此,您必须保存最后一次,然后从现在开始。

这是因为当用户单击按钮时,您启动了倒计时。对于it工作,您必须添加
myTimer.start()。但请记住,它正在创建一个新的倒计时实例,这将从0开始计数。所以你必须保存最后一次,然后从现在开始。

@diogojme在回答中说!)@彼蒂,是的already@diogojme把这个写进一个答案里!:)@皮特,我已经说过了
public class MainActivity extends AppCompatActivity {

    TextView display;
    Button button;
    MyCountdownTimer myTimer;
    long starTime = 15 * 1000;
    long interval = 1000;
    boolean timerIsStarted = false;

    private static final String TAG = "LogMainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myTimer = new MyCountdownTimer(starTime, interval);
        display = (TextView) findViewById(R.id.textViewID);
        button = (Button) findViewById(R.id.buttonID);
    }


    public void startButtonOnClick(View view) {
        if(!timerIsStarted){
            timerIsStarted = true;
            myTimer.start();
        } else {
            timerIsStarted = false;
            display.setText("00");
            myTimer.cancel();
        }
    }

    public class MyCountdownTimer extends CountDownTimer {

        public MyCountdownTimer(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        @Override
        public void onTick(long millisUntilFinished) {
            Log.d(TAG, String.valueOf(millisUntilFinished));
            display.setText(String.valueOf(TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished)));
        }

        @Override
        public void onFinish() {
            timerIsStarted = false;
            Log.d(TAG, "Finished!");
            Toast.makeText(getApplicationContext(), "Finished!", Toast.LENGTH_SHORT).show();
            display.setText("Finished!");
        }
    }
}