在 TimerTask 中增加计数器
Increasing counter in TimerTask
如何增加我这里的计数器:
private void startTimer() {
int i = 0;
final Timer timer = new Timer();
final TimerTask task = new TimerTask() {
@Override
public void run() {
if(preferences.getBoolean(IS_RUNNING_KEY, false))
{
final int k = i++; //i must declared final error
runOnUiThread(new Runnable() {
@Override
public void run() {
timeCounter.setText(""+k);
Log.d("DTAG","K: "+k);
}
});
} else {
timer.cancel();
timer.purge();
}
}
};
timer.schedule(task, 1000);
}
您必须将 i
移出函数的范围。然后它不必声明为 final,您可以更改它。将您的代码更改为此
private int i = 0;
private void startTimer() {
final Timer timer = new Timer();
final TimerTask task = new TimerTask() {
@Override
public void run() {
if(preferences.getBoolean(IS_RUNNING_KEY, false))
{
final int k = i++;
runOnUiThread(new Runnable() {
@Override
public void run() {
timeCounter.setText(""+k);
Log.d("DTAG","K: "+k);
}
});
} else {
timer.cancel();
timer.purge();
}
}
};
timer.schedule(task, 1000);
}
如何增加我这里的计数器:
private void startTimer() {
int i = 0;
final Timer timer = new Timer();
final TimerTask task = new TimerTask() {
@Override
public void run() {
if(preferences.getBoolean(IS_RUNNING_KEY, false))
{
final int k = i++; //i must declared final error
runOnUiThread(new Runnable() {
@Override
public void run() {
timeCounter.setText(""+k);
Log.d("DTAG","K: "+k);
}
});
} else {
timer.cancel();
timer.purge();
}
}
};
timer.schedule(task, 1000);
}
您必须将 i
移出函数的范围。然后它不必声明为 final,您可以更改它。将您的代码更改为此
private int i = 0;
private void startTimer() {
final Timer timer = new Timer();
final TimerTask task = new TimerTask() {
@Override
public void run() {
if(preferences.getBoolean(IS_RUNNING_KEY, false))
{
final int k = i++;
runOnUiThread(new Runnable() {
@Override
public void run() {
timeCounter.setText(""+k);
Log.d("DTAG","K: "+k);
}
});
} else {
timer.cancel();
timer.purge();
}
}
};
timer.schedule(task, 1000);
}