2011-02-02 27 views
5

Tôi đang cố sử dụng CountDownTimer trong Android để nhận được số TextView để đếm ngược từ 100 xuống 0. Tôi muốn điều này xảy ra càng nhanh càng tốt trong khi vẫn nhìn thấy được.Cập nhật Android TextView thường xuyên để hiển thị đếm ngược

Hiện tại nếu khoảng thời gian đánh dấu CountDownTimer nhỏ hơn 500 mili giây (tôi nghĩ nó có thể thấp hơn một chút) thì các cập nhật sẽ không xảy ra.

Tôi chỉ thử tính năng này trên trình mô phỏng.

Tôi có thực hiện việc này đúng cách không? Nếu tôi là, sự chậm trễ rõ ràng này là một hạn chế của trình mô phỏng hay chỉ là một cái gì đó mà tôi sẽ phải sống với? Nếu đây không phải là cách đúng đắn, ai đó có thể giới thiệu một cách tiếp cận khác?

Trả lời

10

Vui lòng kiểm tra mẫu mã sau đây cả trên giả lập & thiết bị

package com.sample; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.CountDownTimer; 
import android.widget.TextView; 

public class SampleTimer extends Activity { 

    TextView tv; // textview to display the countdown 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     tv = new TextView(this); 
     this.setContentView(tv); 

     // 10000 is the starting number (in milliseconds) 
     // 1000 is the number to count down each time (in milliseconds) 

     MyCount counter = new MyCount(10000, 1000); 
     counter.start(); 
    } 


    // countdowntimer is an abstract class, so extend it and fill in methods 
    public class MyCount extends CountDownTimer { 

     public MyCount(long millisInFuture, long countDownInterval) { 
      super(millisInFuture, countDownInterval); 
     } 

     @Override 
     public void onFinish() { 
      tv.setText("done!"); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) { 
      tv.setText("Left: " + millisUntilFinished/1000); 
     } 
    } 
} 
1

bạn thế nào cập nhật vào lúc này, là nó trên thread UI?

Nếu bạn đang đếm lên thay vì xuống, bạn có thể sử dụng tiện ích giao diện người dùng Chronometer. Điều đó không đủ linh hoạt để lùi lại nhưng có lẽ bạn có thể sử dụng its source làm điểm bắt đầu.

Các vấn đề liên quan