xem xét lớp học này, AnimationThread
:Tại sao run() chỉ được gọi một lần?
class AnimationThread implements Runnable {
public void pause() {
doAnimation = false;
}
public void doStart(){
doAnimation = true;
}
@Override
public void run() {
// TODO Auto-generated method stub
if (doAnimation) {
//my code
}
try {
Thread.sleep(500);
}
catch (InterruptedException e) {
}
}
}
Bây giờ tôi bắt đầu chủ đề này trong onCreate
của một hoạt động (chỉ cần trình bày mã thô):
AnimationThread animRunnable = new AnimationThread();
animationThread = new Thread(animRunnable);
animationThread.start();
Nhưng run()
là nhận được gọi là chỉ một lần (tôi truy tìm một bản ghi để xác nhận điều đó). Tôi chỉ muốn biết rằng khi tôi bắt đầu thread tại sao run()
không được gọi lặp đi lặp lại với 500 giấc ngủ. Nó chỉ được gọi một lần.
Cảm ơn. Tôi có logic. Tôi đảm bảo rằng bên trong chạy mã logic của tôi đang chạy liên tục. Thực ra trong tình huống của tôi, tôi muốn run() để thực hiện infinetly cho mục đích của tôi vì vậy tôi đã kèm theo logic của mình trong khi (true) bên trong chạy và animation xảy ra dựa trên trạng thái của biến trạng thái doAnimation. Cảm ơn. –
Đó là một mô hình phổ biến. Tuy nhiên, bạn có thể muốn các chủ đề để chấm dứt cuối cùng để tắt chương trình. Hoặc bạn có thể sử dụng một chuỗi daemon cho điều đó. – Thilo