android四种更新UI进程

子线程 里面 更新报错的原因:
android源代码里面有一个函数:
checkThread();准们用于检测;

checkThread(){ ifmThread != Thread.currentYThread()){ throw new CalledFromWrongThreadException( "Only the original thread that create a view hierarchy can touch its view" ) }

在子线程中,更新主线程的UI都是会报错的,所以下面介绍4中方法,(基本原理差不多。最常用的还是handler,下面第一种,)
1,最常用的一种就是:

 private Handler handler = new Handler(){
                       poublic void handlerMessage(android.os.Message msg){ 
                                                      textView.settext("xxxx");
                       };
               };

然后:
Message message = new Message();
//或者 Message message = handler.obainMessage();
        message.obj = object;
      handler.sendMessage(message);//或者message.sendToTarget();

第 2 种:


 handler.post(new Runnable(){
 textView.setText("xxx");
 }); 

如: ----------


 new Thread(){
 public void run(){
 handler.post(new Runnable(){
 textView.setText("xxx");
 }); 
 }
 }.start();

第 3 种:

runOnUiThread(new Runnable(){
       public void run(){
              textView.setText("xxxx");
             }
         });

第 4中:通过view自身来处理

 textView.post(new Runnable(){
        public void run(){
              textView.setText("xxxx");
        }
 });

你可能感兴趣的:(android)