Android里子线程真的不能刷新UI吗?(2)

到这里相信网友已经明白CalledFromWrongThreadException为什么出现了。那到底非主线程以外的线程能否刷新UI呢?呵呵,答案当然是能,前提条件是它要拥有自己的ViewRoot。如果你要直接创建ViewRoot的实例的话,你会失望的发现不能找到这个类。那么我们要如何做呢?让我们用实例来说说吧,代码如下:

   class TestThread1 extends Thread{

              @Override

              public void run() {

                     Looper.prepare();

                    

                     TextView tx = new TextView(MainActivity.this);

                     tx.setText("test11111111111111111");

                           

                     WindowManager wm = MainActivity.this.getWindowManager();

                  WindowManager.LayoutParams params = new WindowManager.LayoutParams(

250, 250, 200, 200, WindowManager.LayoutParams.FIRST_SUB_WINDOW,

                               WindowManager.LayoutParams.TYPE_TOAST,PixelFormat.OPAQUE);

                    

                     wm.addView(tx, params);

                    

                     Looper.loop();

              }

    }

MainActivity是建立Android工程时生成的入口类,TestThread1是MainActivity的内部类。感兴趣的话,试试吧!看看是不是在屏幕上看到了"test11111111111111111"?       

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwygdy.html