首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于getResponseCode()出现的一些错误

$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its...Android中相关的view和控件操作都不是线程安全的,所以Android才会禁止在非UI线程更新UI,对于显式的非法操作,比如说直接在Activity里创建子线程,然后直接在子线程中操作UI等,Android...而对于隐式的非法操作,App不会直接简单粗暴地异常退出,只是出现奇怪的结果,Only the original thread that created a view hierarchy can touch...its views便是一个例子,字面意思是只有创建视图层次结构的原始线程才能操作它的View,明显是线程安全相关的。...在4.0之后谷歌强制要求连接网络不能在主线程进行访问 只有主线程(UI线程)才可以更新UI

38410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    线程与更新UI,细谈原理

    先看看崩溃日志: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created...(DOM是一种文档对象模型,他的层次结构是除了顶级元素,所有元素都被包括到另外的元素节点中,有点像家谱树结构,很典型的就是html代码解析) 到这里,一个有完整view结构的DecorView就创建出来了...currentThread不是mThread的时候,就会崩溃,报的错误是 “只有创建视图层次结构的原始线程才能触摸它的视图” ,看到这里是不是猜到一些了,这个mThread难道就是“创建视图的原始线程”...所以我们就可以得知崩溃的真正原因,就是当前线程不是ViewRootImpl创建时候的线程就会崩溃。...翻译的还是比较准确的,只有创建视图的原始线程才能修改这个视图,听起来也蛮有道理的,我创造了你才有权利改变你,有那味了。

    85320

    可能是全网最简单透彻的安卓子线程更新 UI 解析

    android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view...,异常的起点在最下面,最顶上的是抛出异常的方法栈,我们只需从下往上就可以知道方法的调用顺序了,跟着 TextView 的源码从 setText() 里去查看源码,setText()方法经过多次跳转进入以下方法...ViewRootImpl 是在哪里实例化的,作为单线程模型,我们可以从 应用的 Java 层入口,ActivityThread 也就是 UI 线程的实现类去查看 1131 private class...H Handler实例是核心中的核心,关键中的关键,一句话,我们的所有消息都需要通过它的处理分发,Activity 的生命周期、用户的触碰事件,一切的反馈都是通过这个来交互,如果没有这个,应用就会像一个...= Thread.currentThread()) { 4746 throw new CalledFromWrongThreadException( // 只有创建视图层次结构的原始线程才能访问它的视图

    1.1K10

    file.UnableToDelet错误:Unparseable date: “20200716 14:37:56“ (at offset 4) ; AndroidStudio不显示build文件

    javax.crypto.IllegalBlockSizeException: data not block size aligned 数据块大小未对齐 des加密需要是8的整数倍; android.view.ViewRootImpl...$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its...在子线程是不能更新ui的,可以使用handler将参数传出,进行ui更新; String和byte[]间的转换 byte[] byteArray = str.getBytes(); Caused by:...org.gradle.api.file.UnableToDeleteFileException: Unable to delete directory 'E:\daima_new 重新复制项目到其他目录打开,试试; 这是因为上次编译的缓存没清空导致...错误:Unparseable date: "2020/07/16 14:37:56" (at offset 4) 解释:at offset 4,在16 的地方解析错误,倒叙数4个时间格式; 2020-07

    6100

    子线程 真的不能更新UI ?

    我们从一个异常说起: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created...翻译就是说 只有创建了view树的线程,才能访问它的子view。并没有说子线程一定不能访问UI。...那可以猜想到,button的确实是在子线程被添加到window中的,子线程确实可以直接访问,而主线程访问确实会抛出异常。看来可以解释这个错误的原因了。 下面就具体分析下。...一般情况,UI就是指Activity的view,这也是我们通常称主线程为UI线程的原因,其实严谨叫法应该是activity的UI线程。而我们这个例子中,这个子线程也可以称为button的UI线程。...另外注意2,在activity的onCreate到首次onResume的时期,创建子线程在其中更新UI也是可以的。这不是违背上面的结论了吗?

    1.3K10

    笔记55 | 处理CalledFromWrongThreadException错误问题

    报错说明 直接在子线程更新UI会报CalledFromWrongThreadException错,错误如下: 12-20 15:39:04.730: E/AndroidRuntime(2763):...FATAL EXCEPTION: Timer-0 12-20 15:39:04.730: E/AndroidRuntime(2763): android.view.ViewRootImpl$CalledFromWrongThreadException...: Only the original thread that created a view hierarchy can touch its views. 12-20 15:39:04.730: E/AndroidRuntime...04.730: E/AndroidRuntime(2763): at java.util.Timer$TimerImpl.run(Timer.java:284) 为什么会出现这个问题,这里有一篇大神的解答关于为什么不能再子线程中更新...UI的讨论大神对代码的解读能力让人兴叹,总结来说是因为子线程没有创建Looper.prepare()这个与子线程不能Toast的问题是一样的Toast为什么不可以在子线程里面运行 ---- 解决方案 1

    1.7K40

    Android开发(第一行代码 第二版) 常见异常和解决办法(基于Android Studio)(二)

    4.使用Android中的消息机制解决:Only the original thread that created a view hierarchy can touch its views 原始代码 public...原因在于,Android系统中的视图组件并不是线程安全的,如果要更新视图,必须在主线程中更新,不可以在子线程中执行更新的操作。...Message msg = new Message(); msg.what = COMPLETED; handler.sendMessage(msg); } } } 通过上面这种方式,我们就可以解决线程安全的问题...,把复杂的任务处理工作交给子线程去完成,然后子线程通过handler对象告知主线程,由主线程更新视图,这个过程中消息机制起着重要的作用。...Android的消息循环是针对线程的,每个线程都可以有自己的消息队列和消息循环。

    1.8K30

    2014-10-27Android学习------程序源码+知识总结------城市列表应用程序

    说白了就是注意一点:invalidate不能再线程中直接使用,但是可以在UI线程中直接使用,postinvalidate可以直接在线程中使用 我们在应用程序中类是继承View的,它就是一个UI线程,那么它就可以直接使用了...强行访问的话会报:android.view.ViewRoot$CalledFromWrongThreadException:Only the original thread that created a...这时候你需要创建一个继承了android.os.Handler的子类,并重写handleMessage(Message msg)方法。...也就是说:在新线程创建并发送一个Message,然后再主线程中捕获、处理该消息。 3.使用多线程和双缓冲 Android中SurfaceView是View的子类,她同时也实现了双缓冲。...直接在R.java中去找 3.实现自己的自定义Adapter需要去继承BASEAdapter的,BaseAdapter是没有做任何数据的处理,所以你需要重载它的四个函数 @Override public

    30630

    面试?看完这篇就够了-深入分析从点击应用图标到应用界面展示

    = Thread.currentThread()) { throw new CalledFromWrongThreadException( "Only...Zygote 进程在系统启动时创建,它预加载了许多常用的类和资源,为应用程序进程提供了一个初始化好的运行环境。当需要创建新的应用程序进程时,系统会通过 Zygote 进程来 fork 出新的进程。...任何线程都可以更新自己创建的 UI,只需要满足以下两种情况在 ViewRootImpl 创建之前,可以在子线程更新 UI,比如在 Activity onCreate 的时候在 ViewRootImpl...创建之后,只需要保证创建 ViewRootImpl 的线程和更新 UI 的线程是同一个就可以;比如我们在子线程调用 ViewManager#addView我们同上说子线程不可以更新 UI,这个异常是在...= Thread.currentThread()) {          throw new CalledFromWrongThreadException(                  "Only

    31530

    面试官问我:Andriod为什么不能在子线程更新UI?

    卧槽,不按套路出牌啊,果然漂亮的女人都难搞定。 1)首先,并非在子线程里面更新UI就一定有问题,如下所示的代码,则可以完美更新UI。...$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its..."Only the original thread that created a view hierarchy can touch its views."); } } 如果当前线程不是主线程...可以讲讲吗? 我想...大概,可能是ViewRootImp还没有创建出来吧,所以没有走到checkThread()方法。...到这里可以事后一支烟了,不是,是总结一下了: 1)ViewRootImpl是在Activity的onResume()方法后面创建出来的,所以在onResume之前的UI更新可以在子线程操作而不报错,因为这个时候

    87501

    Android采坑之路(一):怀疑人生,主线程修改UI也会崩溃?

    $CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its...$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its...mThread = Thread.currentThread(); ...代码省略... } 可以发现全类只有这一处对mThread进行了赋值。...已经是顶级View了,它的parent应该就是ViewRootImpl,那么为什么ViewRootImpl是null呢,明明之前已经show过了。...PS:本人还得吐槽一下Android,Android官方一方面明明宣称不能在主线程以外的线程进行UI的更新,另一方面在初始化ViewRootImpl的时候又不把主线程作为成员变量保存起来,而是直接获取当前所处的线程作为

    5K20

    Unity性能调优手册3:分析工具,Profile,FrameDebugger,MemoryProfiler,HeapExplorer

    然而,所显示的信息表明所选线程所花费的时间。例如,如果您正在使用作业系统或多线程呈现,则不包括另一个线程中的处理时间。如果您想要检查,您可以通过选择如图3.8所示的线程来进行检查。...在这种情况下,Raw Hierarchy原始层次结构视图在本例中使用。Raw Hierarchy视图与Hierarchy视图的不同之处在于Calls总是固定为1。...Tips 当打开一个项目时,通常会有一个很深的层次结构。在这种情况下,您可以通过按住Mac上的Option键(Windows上的Alt键)打开层次结构的所有级别。...相反,按住键关闭一个项目将关闭该层次结构下的所有内容 timeline view 在时间轴视图中,层次视图中的项目显示为方框,因此在查看整个视图时,您可以直观地看到加载的位置。...因为它是鼠标可访问的,即使是深层的层次结构也可以通过拖动来掌握。此外,有了时间线,就不需要切换线程;显示所有线程。这样就可以很容易地看到每个线程中什么时候发生了什么类型的处理。

    1.7K22
    领券