我正在扩展CountDownTimer类以获得一些自定义功能.在onTick()中,如果满足某些条件,我调用cancel(),期望这将是它的结束,但是onTick()回调会被调用直到计数达到了.那么如何防止这种情况发生呢?
Fed*_*dor 18
CountDownTimer.cancel()方法似乎无法正常工作.这是没有解决方案的另一个线程Timer不会在android中停止.
我建议你改用Timer.它更加灵活,可以随时取消.它可能是这样的:
public class MainActivity extends Activity {
TextView mTextField;
long elapsed;
final static long INTERVAL=1000;
final static long TIMEOUT=5000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextField=(TextView)findViewById(R.id.textview1);
TimerTask task=new TimerTask(){
@Override
public void run() {
elapsed+=INTERVAL;
if(elapsed>=TIMEOUT){
this.cancel();
displayText("finished");
return;
}
//if(some other conditions)
// this.cancel();
displayText("seconds elapsed: " + elapsed / 1000);
}
};
Timer timer = new Timer();
timer.scheduleAtFixedRate(task, INTERVAL, INTERVAL);
}
private void displayText(final String text){
this.runOnUiThread(new Runnable(){
@Override
public void run() {
mTextField.setText(text);
}});
}
}
Run Code Online (Sandbox Code Playgroud)
mai*_*450 15
CountDownTimer对我来说也很好用,但我认为它只适用于你在CountDownTimer实现中调用它的外部(不要在onTick中调用它).
在里面打电话也没有用.
| 归档时间: |
|
| 查看次数: |
35775 次 |
| 最近记录: |