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' 饼图库。
我从 catch 中得到“android.util.AndroidRuntimeException:动画师只能在 Looper 线程上 运行”异常。在这种情况下,我真的需要在发生某些事情后调用这个函数,所以我该如何使用这个自旋方法?
尝试使用 Looper 线程之一启动协程作为 CoroutineDispatcher
GlobalScope.launch(Looper thread) {
}
当我在 UIThread 中调用自旋函数时,它工作正常。
runOnUiThread({
pieChart.spin(duration.toInt(), startPoint, spinDegree, Easing.EaseOutQuad)
})
我的 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 线程上 运行”异常。在这种情况下,我真的需要在发生某些事情后调用这个函数,所以我该如何使用这个自旋方法?
尝试使用 Looper 线程之一启动协程作为 CoroutineDispatcher
GlobalScope.launch(Looper thread) {
}
当我在 UIThread 中调用自旋函数时,它工作正常。
runOnUiThread({
pieChart.spin(duration.toInt(), startPoint, spinDegree, Easing.EaseOutQuad)
})