【问题标题】:Kotlin Coroutines, pie chart doesn't spinKotlin Coroutines,饼图不旋转
【发布时间】:2020-12-09 03:20:53
【问题描述】:

我的 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' 库来制作饼图。

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

【问题讨论】:

    标签: android kotlin pie-chart kotlin-coroutines


    【解决方案1】:

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

    GlobalScope.launch(Looper thread) { 
        
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2020-10-15
        • 1970-01-01
        • 1970-01-01
        • 2012-12-28
        • 1970-01-01
        • 1970-01-01
        • 2017-06-16
        • 2016-09-18
        • 2015-03-15
        相关资源
        最近更新 更多