Хорошо, у меня есть следующий код от https://github.com/hongyangAndroid/Android-CircleMenu. Здесь, из трассировки печати, я пришел к выводу, что конструктор запускается только один раз, тогда как метод run() рекурсивно вызывается до некоторого условия.Android: Как выглядит postDelayed (runnable, milliSeconds) с рекурсивным запуском?
Мой вопрос в том, почему метод run() рекурсивно вызывается из postDelayed(), почему не конструктор? и как переменная anglePerSecond сохраняет значение? Я хочу понять, что это поток. Спасибо вам.
//Automatic scrolling tasks
private class AutoFlingRunnable implements Runnable{
private float anglePerSecond;
public AutoFlingRunnable(float velocity){
this.anglePerSecond = velocity;
}
public void run(){
if((int)Math.abs(anglePerSecond) < 20){
isFling = false;
return;
}
isFling = true;
//anglePerSecond/30 in order to avoid rolling too fast
mStartAngle += (anglePerSecond/30);
//Gradually reduce this value
anglePerSecond /= 1.0666F;
postDelayed(this, 30);
//gradually reduce this value
requestLayout(); //re-layout views
}
}