Hỏi về CountDownTimer trong Android

ở trong hàm onFinish(), mình đã gọi lại cái start() trước cái Toast mà sao nó vẫn hiển thị Toast được ạ
em cám ơn ạ

Nghĩa là tại câu lênh này nó tạo ra một đối tượng CountDownTimer mới, chạy trên 1 thread riêng mới, chứ không phải là nó tự khởi động lại chính nó nên câu lênh Toast tiếp tục được thực hiện

em cám ơn ạ :slight_smile:

chẳng thà không comment còn hơn là đưa ra 1 chỉ dẫn sai, rất nguy hiểm.

/**
* Start the countdown.
*/
public synchronized final CountDownTimer start() {
    mCancelled = false;
    if (mMillisInFuture <= 0) {
        onFinish();
        return this;
    }
    mStopTimeInFuture = SystemClock.elapsedRealtime() + mMillisInFuture;
    mHandler.sendMessage(mHandler.obtainMessage(MSG));
    return this;
}

Nguồn: https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/CountDownTimer.java
Sở dĩ gọi start mà vẫn toast được là do khi gọi start thì sẽ đặt 1 lệnh queue async cho hệ thống (đây là dạng lập trình multi thread), vậy nên sau khi kết thúc method start thì nó sẽ vẫn tiếp tục chạy tiếp lệnh được viết nên vẫn Toast ra như thường.

2 Likes

cáo lỗi bác mình nhầm :joy:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?