Tôi đang mở rộng lớp CountDownTimer để có được một số chức năng tùy chỉnh .Trong onTick() trong trường hợp một số điều kiện được đáp ứng, tôi gọi cancel(), hy vọng nó sẽ kết thúc, tuy nhiên callback onTick() gọi đến khi đạt đến số đếm ngược. Vậy làm thế nào để ngăn chặn điều này xảy ra?cách dừng/hủy android CountDownTimer
Trả lời
Phương thức CountDownTimer.cancel() dường như không hoạt động. Đây là một chủ đề khác không có giải pháp Timer does not stop in android.
Tôi khuyên bạn nên sử dụng Bộ hẹn giờ thay thế. Nó linh hoạt hơn nhiều và có thể bị hủy bất cứ lúc nào. Nó có thể là một cái gì đó như thế:
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);
}});
}
}
CountDownTimer cũng đang làm việc tốt cho tôi, nhưng tôi nghĩ rằng nó chỉ hoạt động nếu bạn gọi nó NGOÀI của implemetation CountDownTimer (có nghĩa là không gọi nó trong onTick).
Gọi điện bên trong cũng không hoạt động.
Yea, gọi nó trong onTick doesnt dường như hoạt động. Tôi đã gọi onFinish và cố gắng hủy bộ đếm ngược trong bên trongFinish và nó đã hoạt động – Basher51
Tôi đã thử đoạn mã này, vì hầu hết các câu trả lời đều cho biết bạn không thể hủy bộ hẹn giờ bên trong việc triển khai, do đó tôi đã thử sử dụng trình xử lý bên trong onFinish. Bài cũ nhưng nếu có ai đi qua nó hữu ích của nó.
new Handler().post(new Runnable() {
@Override
public void run() {
timerTextView.setText("00:" + String.format("%02d", counter));
cancel();
}
});
- 1. Android CountDownTimer
- 2. Android CountDownTimer cho thấy 1 trong hai giây
- 3. Countdowntimer theo phút và giây
- 4. android CountDownTimer - last onTick không được gọi - giải pháp sạch sẽ để sử dụng?
- 5. Làm cách nào để mở rộng CountDownTimer để thêm phương thức tạm dừng và tiếp tục?
- 6. Làm cách nào để tôi có thể cho phép CountDownTimer đặt lại sau khi đếm ngược kết thúc?
- 7. CountDownTimer.cancel() không hoạt động trong Android
- 8. hẹn giờ không chỉ dừng lại ở android
- 9. Cập nhật Android TextView thường xuyên để hiển thị đếm ngược
- 10. Android - cách tải android.R.anim.slide_in_right
- 11. Phong cách android spinner
- 12. android cách dừng gps
- 13. Android - cách tạo luồng nền đúng cách?
- 14. Cách lấy ID Android cho một mục menu trong Android?
- 15. Android Studio: cách nhập dự án thư viện Android
- 16. Cách khởi chạy ứng dụng android từ URL trong android?
- 17. ANDROID: Cách truy cập root trong ứng dụng Android?
- 18. Android: Cách lưu trữ cookie?
- 19. Cách nhận GUID trong Android?
- 20. Cách phát hành Android MediaPlayer
- 21. Cách tạo TextArea trong Android
- 22. Android - Cách đặt hình nền?
- 23. Cách kiểm tra android: alwaysRetainTaskState
- 24. Cách đọc pdf trong android
- 25. Android: SeekBar Increment Value - Cách
- 26. Cách tạo tệp trong Android?
- 27. Android: Cách tạo tần suất?
- 28. Cách sử dụng Android ViewPager?
- 29. Android: Phong cách sở thích
- 30. Cách sử dụng Android DownloadManager?
Chỉ cần thực hiện một sự thay thế thả-in cho CountDownTimer rằng bạn có thể hủy từ bên trong onTick: https://gist.github.com/737759 –
@GautierHayoun Bằng phương pháp nào bạn tôi có thể hủy bỏ trong onTick, nhưng onTick () vẫn sẽ được gọi, không biết lý do tại sao – Deqing