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