0
  • 查4.4代码,子线程更新的错误log和新版不同,处理方式也不同。


    android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

                   at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6357)

                   at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:874)


    当更新,触发requestLayout,然后检查了当前线程,如果不是主线程,就奔溃了~~

    1139423796017500160  评论     打赏       断点-含光君
    • 断点-含光君  回复 @断点-含光君
      崩不崩溃,看官方代码,官方的AOSP如果不崩溃,你跑官方模拟器上面,那就不崩溃,但是手机厂商的处理方式可能不同。小米可能让你崩溃,魅族可能不会,因为厂商拿到代码之后是可以随意更新的。难不保他们为了照顾这种憨憨操作,然后直接程序崩溃也不是不可能。不能依靠网上一些文章把你带偏,要自己实践和看错误日志翻Google代码才知道一些情况。
      断点-含光君 2022-03-01 09:30   回复 1139423796017500160
    • 什本先生 2022-03-01 09:46   回复 1439224908176531457
  • 会不会崩溃得看情况 你可以看看这篇博客《Android:为什么子线程不能更新UI》:https://www.jianshu.com/p/58c999d3ada7

    1204736502274318336  评论     打赏       A lonely cat
    • 崩不崩溃,看代码。按照这个源码堆栈提示。看看框架代码怎么处理。


      代码位置:https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/view/ViewRootImpl.java;drc=master;l=10232?q=ViewRootImpl


      log对上,Google也没说那个版本,我估计应该比较高版本。


      更ui的时候,对比了下更新的线程的looper是否和主线程对的上,如果不是,就抛出上面log的异常信息。提示开发者这样做是不安全的。


      你可以换一个低版本模拟器试试,比如4.4.

      1139423796017500160  评论     打赏       断点-含光君
      • 在oncreate方法里的代码

        new Thread(new Runnable() {
            @SuppressLint("SetTextI18n")
            @Override
            public void run() {
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
        
                }
                mButton.setText("123456");
        
            }
        }).start();
        


        1439224908176531457  评论     打赏       什本先生
        相关问题
        kissmyass · 安卓
        2019-12-11 04:41 713 2
        珂珂范范 · 安卓
        2019-12-19 00:59 559 2
        2020-01-31 00:31 693 2
        谁都不许动我的砖 · 安卓 / xml
        2020-02-05 19:16 1184 2
        谁都不许动我的砖 · 安卓
        2020-02-06 06:24 764 2
        珂珂范范 · 安卓模拟器
        2020-02-21 11:10 842 2
        珂珂范范 · 安卓
        2020-02-29 23:50 429 2
        mercenary · 安卓
        2020-03-22 02:34 358 2
        哦豁! · 安卓报错
        2020-03-22 23:17 684 4
        Pancica · 安卓
        2020-03-23 02:13 520 2
        Pancica · 安卓
        2020-03-30 08:22 452 2
        kuro · 安卓
        2020-04-04 00:17 417 4