AsyncImage(
modifier = Modifier
.fillMaxSize()
.clickNoRipple {
click.invoke()
}
.clip(RoundedCornerShape(shape.dp)),
placeholder = painterResource(id = R.drawable.icon_up_image_default),
error = painterResource(id = R.drawable.icon_up_image_default),
model = model,
contentDescription = "",
contentScale = ContentScale.Crop,
onError = {
LogUtils.d("linlian AsyncImageDefault !!!!${it.result.throwable.printStackTrace()}")
}
)
添加 onError = {
LogUtils.d("linlian AsyncImageDefault !!!!${it.result.throwable.printStackTrace()}")
} 打印错误堆栈
追踪到
java.lang.IllegalStateException: Not in applications main thread
10:33:51.920 W at me.jessyan.autosize.utils.Preconditions.checkMainThread(Preconditions.java:113)
10:33:51.920 W at me.jessyan.autosize.AutoSizeCompat.autoConvertDensity(AutoSizeCompat.java:139)
10:33:51.921 W at me.jessyan.autosize.AutoSizeCompat.autoConvertDensityBaseOnWidth(AutoSizeCompat.java:112)
10:33:51.921 W at me.jessyan.autosize.AutoSizeCompat.autoConvertDensityOfGlobal(AutoSizeCompat.java:57)
10:33:51.921 W at com.healthfitness.course.ui.newcoursedetail.NewCourseDetailActivity.getResources(NewCourseDetailActivity.kt:64)
10:33:51.921 W at coil.decode.BitmapFactoryDecoder.decode(BitmapFactoryDecoder.kt:86)
10:33:51.921 W at coil.decode.BitmapFactoryDecoder.decode$lambda$1$lambda$0(BitmapFactoryDecoder.kt:46)
10:33:51.921 W at coil.decode.BitmapFactoryDecoder.$r8$lambda$JfaWZjat2AoVuXgGpv1j76E3ZlA(Unknown Source:0)
10:33:51.921 W at coil.decode.BitmapFactoryDecoder$$ExternalSyntheticLambda0.invoke(D8$$SyntheticClass:0)
10:33:51.921 W at kotlinx.coroutines.InterruptibleKt.runInterruptibleInExpectedContext(Interruptible.kt:48)
10:33:51.921 W at kotlinx.coroutines.InterruptibleKt.access$runInterruptibleInExpectedContext(Interruptible.kt:1)
10:33:51.921 W at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invokeSuspend(Interruptible.kt:40)
10:33:51.923 W at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invoke(Unknown Source:8)
10:33:51.923 W at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invoke(Unknown Source:4)
10:33:51.924 W at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:61)
10:33:51.924 W at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:155)
10:33:51.924 W at kotlinx.coroutines.BuildersKt.withContext(Unknown Source:1)
10:33:51.924 W at kotlinx.coroutines.InterruptibleKt.runInterruptible(Interruptible.kt:39)
10:33:51.924 W at kotlinx.coroutines.InterruptibleKt.runInter
在非UI线程用的getresource
排查到 原来的Activity 页面有如下代码
override fun getResources(): Resources {
AutoSizeCompat.autoConvertDensityOfGlobal(super.getResources())//如果没有自定义需求用这个方法
return super.getResources()
}
建议把这段代码移到 oncreate中,
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
AutoSizeCompat.autoConvertDensityOfGlobal(super.getResources())//如果没有自定义需求用这个方法
}
修改之后,图片正常加载