Thread AsyncTask(异步任务)、Handler 更新UI

为什么使用线程更新?

         在Android开发过程中,如果,在主线程中使用耗时操作,Adnroid会时程序进入无响应状态,故此,耗时操作,必须通过子线程实现。

Therad  实现子线程刷新


  1.  建立一个类,继承Therad实现子线程刷新

class Mythread extends Thread{
  public void run(){
   String str="我是通过Handler,被发送的数据";   //被更新的数据
  
//   创建Message 对象,
    Message msg=new Message();
    msg.obj=str;
    //发送消息
   handler.sendMessage(msg);
       
   
  }


}

 2.建立Handler  进行循环接受子线程传递过来的值,并且更新UI
//判断当前函数是否被主线程调用的方式
Looper.getMainLooper() //当前主线程运行的Looper
Looper.myLooper();      Looper  循环接受消息的

boolean result=Looper.getMainLooper()==Looper.myLooper();
//Handler  接受消息

Handler handler=new Handler(){
 //处理消息(被主线程执行)
  public void handlerMessage(Message msg){
      //接受通过Message 和Handler 传递过来的值
      String str=(String)msg.obj;
   }


}




AsyncTask  异步任务,优化后的Handler,它封装了Handler的方法

简介:AsyncTask   是产生一个线程池,当你使用完一个线程后,它回到线程池

  1. 继承AsyncTask 
    class MyAsycTask extends AsyncTask {
            /**
             * 被主线程执行,在doInBackground() 函数之前执行
             */
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                //可以用来,执行一些,提示
            }
    
            /**
             * 被子线程执行,用来处理耗时操作
             */
            @Override
            protected Object doInBackground(Object[] params) {
                //推送数据,类型Object  支持任何数据类型
                publishProgress();
                return null;
            }
    
            /**
             * 推送的数据,是被推送到,本方法中
             */
            @Override
            protected void onProgressUpdate(Object[] values) {
                //super.onProgressUpdate(values);
            }
    
            /**
             * 被主线程执行,在doInBackground() 函数之后执行
             */
            @Override
            protected void onPostExecute(Object o) {
                //super.onPostExecute(o);
                //更新UI
            }
        }
    
    
    }



  2.  MyAsycTask myAsycTask=new MyAsycTask();
      myAsycTask.execute();  调用


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值