Android 异步操作UI的方法

本文介绍了四种在Android中从子线程更新UI的有效方法:使用Handler、AsyncTask、View.post(Runnable)以及Activity.runOnUiThread(Runnable)。这些方法允许开发者在不影响用户体验的情况下执行耗时操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法1:Handler
子线程调用Handler的sendMessage(message)发送事件。
Handler handler= new Handler() {
      @Override
      public void handleMessage(Message msg) {
             super.handleMessage(msg);
             //操作界面
          textView.setText("zhangkai281");
   }
 };


public class MyThread extends Thread {
     public void run() {
  // 耗时操作
loadNetWork();
            Message msg = new Message();
            handler.sendMessage(msg);//向Handler发送消息,
      }
 }
方法2:AsyncTask
//UI线程中执行
new DownloadImageTask().execute( "www.91dota.com" );


private class LoadTask extends AsyncTask {
protected String doInBackground( String... url ) {
        return loadDataFormNetwork( url[0] );//后台耗时操作
}


protected void onPostExecute( String result ) {
      myText.setText( result ); //得到来自网络的信息刷新页面 


}
方法3:View.post(Runnable )
public void onClick( View v ) {
        new Thread( new Runnable() {
                public void run() {
                       // 耗时操作
      loadNetWork();
                          myText.( new Runnable() {
                                  myText.setText( 来自网络的信息);
                          });
                 }
        }).start();
}
方法4:Activity.runOnUiThread(Runnable )   与view.post类似
public void onClick( View v ) {
        new Thread( new Runnable() {
                public void run() {
                       // 耗时操作
    loadNetWork();
                         Activity.runOnUiThread.( new Runnable() {
                                  myText.setText( 来自网络的信息);
                          });
                 }
        }).start();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值