问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如果在Android 子线程中更新ui

发布网友 发布时间:2022-04-21 17:41

我来回答

3个回答

热心网友 时间:2024-05-16 10:59

这个问题刚刚也遇到了,跟了下android的源码,大概分析一下。

Android 为了*子线程更新UI, 设置了线程的检查机制,
例如从子线程对Textview.setText,
通过报错的log能看出, 抛出异常的位置是在android.view.ViewRoot.checkThread(),从字面的意思看,这个方法就是用来检查修改view的Thread是否主线程。
这个检查方法在view的requestLayout()里面被调用,但是requestLayout()有些情况下不会被调用:
if(mParent != null){
if (!mParent.isLayoutRequested()) {
mParent.requestLayout();
}
}

唯一的解释就是以上2个if中的一个不符合,导致后面的checkThread()没被调用,子线程就成功地修改了界面UI。
这个可能是在activity 被创建的初期,layout或者其他动作初始化还没有完成,导致线程的检查没有发生,具体的问题就要去研究下才知道了。

你可以试一下, 你的第一种情况,在new Thread 修改textview之前让线程睡眠2秒,这时候再来修改UI就会抛出异常了。

热心网友 时间:2024-05-16 10:59

不是子线程不能更细UI 还是UI线程中的子线程不能直接更新UI,,你在oncreate中创建的是一个依附于主线程的子线。。而在button中创建的是一个依附于UI线程的子线程,,

热心网友 时间:2024-05-16 11:00

针对于b情况,你尝试下在类中新建一个thread,然后在button的setOnClickListener中调用,应改没有问题。如果在button的setOnClickListener,应该算是内部类了。追问谢谢您的回答。
内部类?A中onCreate中创建的匿名Thread就不是内部类吗?(鄙人java也么学好。。)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑文件编辑好如何发送给微信如何把电脑上的文件发到微信上 笔记本电脑上的文件发送到微信怎么把电脑里的文件传到手机微信 我每天早晨吃米糊放白糖有害吗? 吃糖太多对我有好处么! 适合明年工作计划开头的句子 让人耳目一新的年度工作计划开头句子锦集五十四句 个人年度工作计划开头优美句子 让上司眼前一亮的工作计划开头语收藏四十一句 工作计划开头 怎么写工作计划开头 新干线0系电动列车的运行设备 饭桌上得礼仪有那些 灵山有啥好玩的 android中如何实现UI的实时更新 灵山风景区有哪些景点 Android可不可以在子线程中更新UI 餐桌上的礼仪 灵山自然风景区的介绍 android中在子线程中更新UI的几种方法 广西灵山县旅游景点大全 android通过Handler使子线程更新UI 餐桌上座次礼仪 “安之若素,处之泰然。”是一种什么样的诉述呢? “安之若素,甘之如饴”的意思? 鬼童子的内容 静懿之美安之若素什么意思? 古代小说,女主安弱素 皇上不许后宫养猫,为什么叶澜依养了也没事? 安之若素的素是什么意思 安之诺素什么意思,是成语? 安之素年与昔年的意思 上饶灵山风景区有哪些景点 西餐上餐顺序及用餐礼仪 钦州市灵山县的八大景观分别是什么呢? android怎么样在子线程实例化的handler去更新UI 饭桌上的礼仪 android怎么更新UI 灵山有什么好的旅游景点? 在多线程中,子线程更新主线程ui有哪些方法及注意点 餐桌上的礼仪知识? 灵山县有哪些旅游景点? 分析android ui为什么在子线程中更新会崩溃 信阳灵山风景名胜区的景区景点 android studio子线程更新UI 问题 灵山有哪些名胜古迹?有哪些著名人物? 求世界各国的餐桌礼仪~ 五个灵山都有哪几个 Android 可以通过子线程直接更新的控件有哪些,UI... 餐桌上关于夹菜礼仪 在Android子线程中初始化handler后,为什么该子线... 河南灵山风景区