question: private void tick ( ) { if ( startedIndexTimeStamp == 0 ) { startedIndexTimeStamp = System . currentTimeMillis ( ) ; } long timeElapsedSinceIndexStartMilliseconds = System . currentTimeMillis ( ) - startedIndexTimeStamp ; int maximumIndex = divisorList . length - 1 ; int currentDivisor = divisorList [ currentIndex ] ; if ( ticksSinceIndexChange % currentDivisor == 0 ) { timePicker . zInternalTryChangeTimeByIncrement ( changeAmountMinutes ) ; if ( ( currentIndex < maximumIndex ) && ( timeElapsedSinceIndexStartMilliseconds > millisForDivisorList [ currentIndex ] ) ) { ticksSinceIndexChange = 0 ; ++ currentIndex ; startedIndexTimeStamp = System . currentTimeMillis ( ) ; } } ++ ticksSinceIndexChange ; }
target:  tick, This is called once each time that the timer fires. (Every 20 milliseconds). However, the value in the time picker will only be changed once for every certain number of calls to the tick() function. The number of calls which is required is controlled by the "divisorList" array values. The amount of time that is spent using each divisorList array value is controlled by the "millisForIndexList".