Kotlin Coroutines,饼图不旋转

Kotlin Coroutines, pie chart doesn't spin

我的 pieChart 旋转函数有问题。 当我在主要威胁中调用它时,它完全按预期工作,但是, 当我在协程中调用它时,它什么也不做。 我调试了代码,它进入 spinWheel() 函数但不执行 pieChart.spin 函数。

这是代码。

  GlobalScope.launch {
         while (!isSpinned) {
             try {
                 rotationDegree = pieChart.rotationAngle - 270
                 if (rotationDegree > 40) {
                     isSpinned = true
                     pieChart.isRotationEnabled = false
                     pieChart.setTouchEnabled(false)
                     spinWheel(1800f + 270f + randNumber , 12000)
                     cancel()

                 }
                 delay(10)
             } catch (ex: Exception) {
                 Log.d("TAG", "onCreate: " + ex)
             }
         }
     }


 private fun spinWheel(spinDegree: Float, duration: Long) {

     pieChart.spin(duration.toInt(), 270f, spinDegree, Easing.EaseOutQuad)

 }

我使用 'com.github.PhilJay:MPAndroidChart:v3.1.0' 饼图库。

我从 c​​atch 中得到“android.util.AndroidRuntimeException:动画师只能在 Looper 线程上 运行”异常。在这种情况下,我真的需要在发生某些事情后调用这个函数,所以我该如何使用这个自旋方法?

尝试使用 Looper 线程之一启动协程作为 CoroutineDispatcher

GlobalScope.launch(Looper thread) { 
    
}

当我在 UIThread 中调用自旋函数时,它工作正常。

   runOnUiThread({
            pieChart.spin(duration.toInt(), startPoint, spinDegree, Easing.EaseOutQuad)
        })