我在java中有一个timer
对象。以下是我的代码:
package com.krish.timerproject;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity {
Button btnStart, btnStop, btnPause;
int x = 0;
Timer timer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = findViewById(R.id.btnStart);
btnPause = findViewById(R.id.btnPause);
btnStop = findViewById(R.id.btnStop);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (timer != null){
return;
}
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
Log.d("testingTimer", String.valueOf(x));
x++;
}
}, 0, 1000);
}
});
btnPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (timer != null){
timer.cancel();
}
}
});
btnStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (timer != null){
timer.cancel();
}
x=0;
}
});
}
}
如果我调用timer.cancel()
,它是终止计时器并返回null,还是计时器对象仍然存在?因此,我必须在timer.cancel()
之后设置timer = null;
吗?
我想知道这是因为当我点击暂停按钮,然后开始按钮,我的计时器没有恢复(它进入了if(timer !=null){return;}
谢谢!!
来自
java.util.Timer#cancel
的Javadoc:如您所见,它取消计划任务而不中断正在运行的任务。
当您这样做时,timer对象会更改其状态,但它不会将自己设置为
null
。此外,对象无法修改对自身的引用,因此无法设置自身
null
,因为this
是主表达式。在程序中,必须明确地将
timer
对象设置为null
。