AsyncImage 无法加载图片排查

Compose加载本地图片和网络图片 Compose自带组件Image和coil库的简单用法。 阅读详情
 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())//如果没有自定义需求用这个方法

    }

修改之后,图片正常加载

Jetpack Compose Image组件开发指南与Material 3实践 现代Android开发中,Jetpack Compose的声明式UI框架正在重塑图片加载的实现方式。Image组件作为视觉呈现的核心控件,其底层基于Canvas绘制系统,通过painter资源加载机制实现高效渲染。与传统ImageView相比,Compose方案在性能优化、动态适配和代码简洁性方面具有显著优势,特别适合实现Material 3设计规范要求的动态色彩系统和形状裁剪。开发者通过contentScale参数控制图片缩放策略,结合Modifier链式调用可快速构建响应式布局,这在电商类App的商品展 阅读详情

相关推荐

跨平台开发新选择:Kuikly框架实战解析

跨平台开发技术通过共享代码库实现多端应用的高效构建,其核心原理是利用中间层抽象各平台差异。Kotlin Multiplatform(KMP)作为现代跨平台方案,通过expect/actual机制实现平台特定代码的优雅隔离。Kuikly框架基于KMP深度优化,提供原生渲染能力和90%+代码共享率,显著降低Android、iOS和鸿蒙三端开发成本。在电商、金融等需要快速迭代的场景中,这类技术能确保功能同步上线和UI一致性。相比Flutter的Dart语言和React Native的JS Bridge,Kuikl

weixin_33713350的博客 429

Compose布局之Image初步使用到了解(加载网络图片)

本文介绍Compose中Image控件的基本概念以及深入了解(加载网络图片)。根据官网教程总结,如有不对请在评论区指教

我怀里的猫的博客 7761

Android天气应用开发:从零搭建MVVM架构与Jetpack Compose实战

在移动应用开发领域,架构设计与技术选型是决定项目成败的关键基础。MVVM(Model-View-ViewModel)架构模式通过清晰的关注点分离,实现了数据驱动UI的核心原理,显著提升了代码的可测试性与可维护性。结合Kotlin协程的异步处理能力,能够优雅地管理数据流与状态。这种技术组合在现代Android开发中展现出巨大价值,尤其适用于数据实时更新、UI状态复杂的应用场景,例如天气类应用。本文以构建一个Android天气APP为例,系统阐述如何运用Jetpack Compose这一声明式UI框架与MVVM

weixin_33782386的博客 491

Jetpack Compose —— Image

总结起来,Jetpack Compose 中的 Image 组件提供了简单而强大的图像显示功能,可以满足各种场景下的需求。要在 Jetpack Compose 中显示图像,您可以使用 Image 组件,并将图像资源的引用作为参数传递给它。除了基本的图像显示功能外,Jetpack Compose 的 Image 组件还提供了一些强大的功能和属性,例如调整图像的大小、裁剪图像、添加点击事件等。在 Jetpack Compose 中,Image 是一个重要的组件,用于显示图像和处理图像相关的操作。

江小白的博客 2514

Kuikly框架:跨平台开发新选择,高效覆盖Android/iOS/鸿蒙

跨平台开发技术通过共享代码库实现多端应用开发,显著提升开发效率并降低维护成本。其核心原理在于抽象通用业务逻辑,通过平台适配层处理系统差异,最终调用原生渲染引擎保证性能。这种架构在移动应用、物联网设备等场景具有重要价值,能快速响应多终端适配需求。以Kotlin Multiplatform为基础的Kuikly框架创新性地整合了Android、iOS和鸿蒙平台支持,通过Compose兼容的DSL实现90%代码复用率,实测鸿蒙端帧率可达60FPS。相比传统方案,该框架在保持原生性能优势的同时,解决了Flutter引

weixin_33937778的博客 363

Android骨架屏实现原理与性能优化实战指南

骨架屏是一种提升移动应用用户体验的核心技术,通过在数据加载期间展示与最终布局相似的灰色占位界面,为用户提供即时视觉反馈。其实现原理主要基于View绘制流程的拦截与重绘,通过代理布局方案在dispatchDraw方法中动态绘制骨架块,并配合Shimmer动画增强加载感知。这项技术的核心价值在于降低用户认知负荷,提升等待耐心,广泛应用于列表页、详情页等异步加载场景。在Android开发中,结合RecyclerView适配与性能优化,骨架屏能显著改善内容闪屏问题。本文深入解析了代理布局方案与Shimmer动画的实

weixin_33884611的博客 370

Compose笔记(十七)--AsyncImage

这一节了解一下Compose中的AsyncImage的使用,AsyncImage是由 Coil库提供的一个用于异步加载图片的组件...

ljt2724960661的博客 1426

Android UI设计六大核心维度与优化实践

在移动应用开发中,UI设计是影响用户体验的关键因素。从技术原理来看,优秀的UI需要实现视觉一致性、交互反馈、性能表现等多维度平衡。Material Design规范提供了基础设计语言,而Android Studio的Layout Inspector等工具能有效诊断布局问题。工程实践中,通过ConstraintLayout优化层级、RippleDrawable增强反馈、LeakCanary检测内存泄漏等技术手段,可显著提升界面流畅度。这些优化在电商、社交等高频交互场景中尤为重要,例如列表渲染性能直接影响用户留

cunfuxiao7305的博客 384

异步加载图片,保存本地缓存

using UnityEngine; using System.Collections; using System.IO; public class AsyncImageDownload :MonoBehaviour { public Texture placeholder; public static AsyncImageDownload Instance=null; priv

Champion_Lee的专栏 725

Android开发新范式:本地AI代理实现一键生成功能模块

在软件开发领域,AI代理接口正逐步改变传统的编码模式,其核心原理是通过自然语言理解与代码生成模型,将需求描述直接转化为可执行代码。这一技术价值在于显著提升开发效率,减少重复性劳动,尤其适用于快速构建应用基础架构和通用功能模块。在Android开发场景中,结合本地部署的AI模型,开发者可以在保证代码私密性和定制化的前提下,实现从需求到完整功能页面的“一键生成”。本文聚焦于如何配置并使用本地AI代理接口,在Android Code Studio IDE中完成从环境搭建到生成高质量Android代码的完整工程实践

weixin_30430169的博客 408

iOS灵动岛开发实战:ActivityKit与SwiftUI实现实时活动

实时活动(Live Activity)是iOS系统中用于在锁屏和灵动岛区域展示动态信息的关键技术。其核心原理是通过系统级框架ActivityKit,结合声明式UI框架SwiftUI,实现状态驱动的界面更新。这项技术的价值在于,它允许应用在不打扰用户的前提下,持续提供关键进程的实时状态,如外卖配送进度、音乐播放或计时器倒计时。在应用场景上,它特别适合需要后台运行并即时反馈的服务,例如出行导航、文件传输和体育赛事直播。通过ActivityKit,开发者可以构建出与系统深度集成、性能高效且体验流畅的灵动岛组件,这

weixin_33836874的博客 400

Jetpack Compose LazyColumn性能优化与实战技巧

在Android现代UI开发中,声明式编程框架Jetpack Compose通过LazyColumn组件彻底改变了列表渲染方式。其核心原理基于动态可视区域计算和智能缓存策略,相比传统RecyclerView能显著提升40%以上的滚动性能。作为Compose生态的关键组件,LazyColumn通过差异化渲染机制实现内存优化,特别适合处理千万级DAU应用中的复杂列表场景。开发者需要掌握compositionLocal状态管理、Coil图片加载优化等关键技术,同时注意避免常见的内存泄漏问题。本文深入解析LazyC

weixin_30650039的博客 405

基于Kotlin与Jetpack Compose的天气应用开发全流程解析

在现代移动应用开发中,MVVM架构模式与声明式UI框架已成为构建健壮、可维护应用的核心范式。MVVM通过清晰的关注点分离,将数据逻辑、业务规则与用户界面解耦,而Jetpack Compose作为Android官方推荐的声明式UI工具包,极大地简化了UI开发与状态管理。其技术价值在于提升了开发效率、增强了代码可测试性,并优化了应用性能。结合Kotlin协程与Flow处理异步数据流,以及Retrofit进行网络请求、Room实现本地缓存,能够构建出响应迅速、体验流畅的现代化应用。这类技术组合尤其适用于需要实时数

weixin_30591551的博客 424

Jetpack Compose滚动布局进阶:LazyListState控制与性能优化实战

在Android应用开发中,滚动列表是构建流畅用户体验的核心组件,其性能直接影响应用响应速度和用户留存。Jetpack Compose作为现代声明式UI框架,通过LazyColumn/LazyRow组件和LazyListState状态管理机制,实现了高效的列表渲染与滚动控制。理解滚动状态的响应式原理,能够帮助开发者实现吸顶标题、视差滚动等高级交互效果,同时通过合理设置项的唯一键(Key)和避免组合阶段的耗时操作,可显著提升滚动性能。在实际工程中,结合智能预加载和滚动状态监听,能够优化图片流等复杂场景的体验。

weixin_34221775的博客 349

KV Cache 详解:新手也能理解的 LLM 推理加速技巧

(Autoregressive)生成的,即每次生成一个 token,然后将其作为输入继续生成下一个 token。:如果序列太长,超过了 KV Cache 的存储限制,就需要丢弃最早的 tokens(类似滑动窗口)。时,每次只会生成一个新 token,然后再把这个 token 作为输入继续生成下一个 token。,只缓存计算过的 K,VK, V,每次只计算新 token 的 K,VK, V,从而提升推理效率。:如果输入的 prompt 发生变化,之前的 KV Cache 不能复用,必须重新计算。

Harry的博客 7374

3D Slicer:从入门到精通(二)——入门指南

本篇文章包含开始使用3D Slicer所需的信息,包括如何安装和快速开始使用基本功能,以及在哪里找到更多信息。

walt3433的博客 2万+

Jetpack Compose开发AndroidTV应用实战指南

Jetpack Compose作为Android现代UI工具包,采用声明式编程范式大幅提升开发效率。其TV扩展库针对大屏设备特性,通过焦点管理系统和专用组件解决传统View系统在TV开发中的痛点。在10英尺界面场景下,Compose的布局性能优势明显,代码量可减少40%以上。TV应用开发需特别注意DPAD导航逻辑、内存优化和4K渲染等关键技术点。通过Compose for TV的TvLazyRow等组件,开发者能快速构建符合Material Design规范的横向影片列表,配合硬件加速解码实现流畅的4K视频

weixin_33853794的博客 341

windows系统下,如何为comfyui如何安装triton

​ 有些加速插件、模型在安装的时候,比如说sageattention的安装,就需要提前安装triton这个包,不过这个包有点特殊,windows下略微不好装,经常会装失败。 🎠如何安装 之前也有人介绍过,要到github上找个wheel文件,找到对应的版本安装下就好了。 问题是:https://github.com/woct0rdho/triton-windows/releases 这个git地址上,已经找不到wheel文件了... ​

聚梦小课堂 4503

Android开发实战:从环境搭建到性能优化全攻略

Android开发作为移动应用开发的核心领域,其技术栈涵盖从基础环境搭建到高级架构设计的完整体系。理解Android Studio配置、Gradle构建系统以及ADB调试工具的原理,是提升开发效率的关键。在工程实践中,内存泄漏检测、启动速度优化等性能调优技术直接影响用户体验,而MVVM架构、跨进程通信等方案则关系到应用的可维护性。随着Kotlin和Jetpack Compose的普及,现代Android开发更强调声明式UI和响应式编程。本指南基于十余年实战经验,系统梳理了环境配置、框架设计、性能优化等核心知

457

[华中科技计组实验]logisim完成单周期5级流水MIPS CPU

[华中科技计组实验]logisim完成单周期5级流水MIPS32 CPU hu~,终于完成了,真是费劲呐 支持24条指令,5级流水线,可以对分支指令处理,寄存器冲突处理,指令ROM为1K,数据RAM为1M,32位MIPS指令集CPU 但是… 大量使用比较器造成硬件开销巨大,测试一下发现这尼玛真是个老爷车还没单周期跑的快,自己电脑cpu占百分之八九十只能跑到20多赫兹,一个走马灯跑了半天,可优化空间太大了,写了那么多天造成这个破样,有点悲剧。。。 先放个图大伙参考就行了,要是有人想听思路的话接下来再更 .

zrc的博客 1万+

别再手动抄表了!用PaddleOCR超轻量模型5分钟搞定数字仪表识别(附完整Python代码)

本文介绍如何利用PaddleOCR超轻量模型快速实现工业仪表数字识别自动化。通过5行核心代码和关键预处理步骤,显著提升识别准确率至98.2%,解决传统OCR在工业场景中的体积大、抗干扰弱等问题,并提供完整Python代码和边缘部署优化方案。

weixin_31062533的博客 351

SwiftUIPager终极指南:专业级分页组件实现方案

在SwiftUI生态系统中,原生分页组件的缺失一直是开发者面临的挑战。SwiftUIPager作为一款专业的SwiftUI分页组件库,彻底改变了这一现状。它提供了流畅的滚动体验、丰富的自定义选项和卓越的性能表现,让开发者能够快速构建出令人惊艳的分页界面。无论是电商应用的轮播图、内容浏览器的无限滚动,还是复杂的数据展示界面,SwiftUIPager都能提供完整的解决方案。 ## 🚀 SwiftU

gitblog_00449的博客 425

8.30华为OD机试真题 新系统 - 单词搜索计数 (Java/Py/C/C++/Js/Go)

8.30华为OD机试真题 新系统 - 单词搜索计数 (Java/Py/C/C++/Js/Go)

算法大师! 603

3天掌握Android开源项目:从零构建高质量应用的技术攻略

你是否遇到过这样的困境?面对海量的Android开源项目,不知从何入手;想要借鉴优秀代码,却找不到合适的参考;想要提升开发效率,却苦于没有好的工具库。本文将为你提供一套完整的问题解决方案,帮助你在3天内系统掌握Android开源项目的使用技巧,快速构建高质量应用。 ## 🚀 挑战篇:Android开发中的三大痛点 ### 痛点分析:为什么你的开发效率低下? **资源选择困难症**:GitH

gitblog_00515的博客 824

从Overleaf上导出Latex论文发布到arxiv详细教程(常见问题与解决)

如果是做cv的论文请选择“Computer Vision and Pattern Recognition”,选择“Artificial Intelligence”可能会被on hold,貌似这个指的是传统的人工智能?我用公司邮箱注册发布一篇论文,一个多月还是“on hold”状态,换成edu邮箱第二天就被发布了。3、有可能是subject class选错了,编辑会帮你手动选择,然后发一封邮件告知你解除……报错缺失bbl等文件,这是因为从Menu中下载的话,是没有bbl文件的。论文被on hold。

沉迷单车的追风少年 3591

踩过20+工控视觉项目的坑后,我用C# + 海康相机 + YOLOv11实现了零依赖产线缺陷检测

触发式检测:只有光电传感器检测到零件到位,才触发相机拍照和算法检测,不是持续推理,减少工控机性能占用;全链路本地运行:从图像采集、算法推理到不良品剔除,所有逻辑全在本地工控机运行,不需要外网、不需要云端服务,哪怕产线断网也能正常运行;异常降级机制:算法推理异常时,系统自动触发产线缓停,同时声光告警,不会让不良品流到下工序,满足汽车行业IATF16949质量要求;模块化解耦:算法核心层和业务逻辑层完全分离,后续更换YOLO模型、新增缺陷类型,只需要替换模型文件,不需要修改业务逻辑;全链路可追溯。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 152
上一篇: 多个请求并行改造
下一篇: rememberLauncherForActivityResult使用示例
lynn8570_blog
博客等级 码龄10年 254粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值