欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 在其他线程中更新UI线程的解决方法

程序员文章站 2023-11-20 17:49:16
方法一:activity.runonuithread(runnable )(经验之道: 这个最好用, 凡是要刷新页面的地方,activity.runonuithread(...
方法一:activity.runonuithread(runnable )
(经验之道: 这个最好用, 凡是要刷新页面的地方,
activity.runonuithread( new runnable()
    { public void run(){更新ui}}
);

方法二:子线程调用handler的sendmessage(message)发送事件。
复制代码 代码如下:

mhandler = new handler() { 
   @override 
   public void handlemessage(message msg) { 
        //操作界面 
       mytext.settext( 来自网络的信息); 
      super.handlemessage(msg); 
   } 
  }; 
public class mythread extends thread { 
     public void run() { 
​    ​    ​    // 耗时操作 
​    ​    ​    ​loadnetwork(); 
            message msg = new message(); 
            mhandler.sendmessage(msg);//向handler发送消息, 
      } 
 }

方法三:view.post(runnable )
复制代码 代码如下:

public void onclick( view v ) { 
        new thread( new runnable() { 
                public void run() { 
                       // 耗时操作 
​    ​    ​    ​    ​    ​      loadnetwork(); 
​                          mytext.( new runnable() { 
                                  mytext.settext( 来自网络的信息); 
                          }); 
                 } 
        }).start(); 
}

方法四:asynctask
复制代码 代码如下:

//ui线程中执行 
new downloadimagetask().execute( "www.91dota.com" ); 
private class downloadimagetask extends asynctask { 
    protected string doinbackground( string... url ) { 
         return loaddataformnetwork( url[0] );//后台耗时操作 
    } 

    protected void onpostexecute( string result ) { 
          mytext.settext( result ); //得到来自网络的信息刷新页面  

   } 
}