UI与线程

在多方合作项目中,使用库调用的UI出现加载图片异常问题,通过分析发现是线程执行上下文改变导致相对路径图片无法正确显示。详细探讨了问题原因、解决方法及上下文环境变化的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UI与线程

本文为我项目中遇到的一个问题实际记录。

1、问题描述

  这个项目是多方合作的项目,有些源代码是非公开的,通过库(so)的方式调用的,我的一个UI有很多加载图片的地方。

这些加载的图片是以相对路径的方式来加载的,理论上来说会比较安全,但在画UI的过程中,之前的图片都能顺利的画出来。

但进度条(这个UI是一个下载的页面)走到一半时却图片加载不成功,只有进度条的百分比在显示。并且每次(运行多次)

情况都不一样。

2、问题分析

  百思不得其解,仔细想想是不是图片的路径变了。使得执行的上下文环境改变了,做试验,将UI中部分图片的路径改为绝对路径,

而其他的图片保留相对路径,执行程序,发现改为绝对路径的图片能正确显示,而保留相对路径的图片却还是不能显示,是哪里改

变的执行上下文呢?如是通过最土的方式,在所有调用函数的前后调用system("pwd"),通过打印出的信息发现,在调用so库函数

的前后路径改变了。通过询问第三方库制作人员发现,so库中使用了chdir函数改变了执行路径。那为什么会图片画不出来呢?

3、原因

  在我使用的UI后台是一个线程在执行下载,线程中的函数调用了so库中的函数。而显示进度条中的百分比,是通过检查下载下来

的文件的大小与实际网络传输过来的文件大小(xml中的一个标签来指定),因为so库中的函数在下载时改变了目录,因此在下载页面

刚开始还没有进入调用so库函数时能显示出图片,而在下载过程中调用了so库函数之后,路径改变了,相对路径中的图片就找不到了

因此也就画不出来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

louis-tt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值