I found that the main issue comes from android.widget.Scroller. If the value of SystemClock.uptimeMillis() exceeds 25 days, on some devices, the value of AnimationUtils.currentAnimationTimeMillis() may sometimes exceed 2,200,000,000L. In the Scroller class, the value of AnimationUtils.currentAnimationTimeMillis() is occasionally cast to an int, which causes this bug. You should rewrite android Scroller and prevent from casting value of AnimationUtils.currentAnimationTimeMillis() to int.
to reproducing this bug you can rewrite Scroller and add AnimationUtils.currentAnimationTimeMillis() value with 2,200,000,000L and then you will see the bug.