android 异步执行方法

本文介绍了Android中实现异步操作的四种方式:使用Handle进行消息传递,通过Thread创建新线程,利用AsyncTask进行简单后台任务,以及运用Loader进行数据加载。这些方法都允许开发者在不阻塞主线程的情况下执行耗时操作。

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

1.Handle

//①定义一个Handle
private Handler handler =new Handler(){
   @Override
   //当有消息发送出来的时候就执行Handler的这个方法
   public void handleMessage(Message msg){
      super.handleMessage(msg);
      //做事
      //do something;
   }
};

//②想要调用时
handler.sendEmptyMessage(0);

2.Thread

      new Thread(){
         public void run(){
            //在这里执行长耗时方法
            //do some hard thing;
         }
      }.start();

 

handle 和 thread都可以直接访问主线程的变量非常方便

//声明变量
private Button b1;
private ProgressDialog pd;
//定义Handler对象
private Handler handler =new Handler(){
   @Override
   public void handleMessage(Message msg){
      super.handleMessage(msg);

      pd.dismiss();       //直接访问主线程变量pd
   }
};
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
}
private void processThread(){
      pd= ProgressDialog.show(MainHandler.this, "同步", "正在同步…");
      new Thread(){
         public void run(){
            //在这里执行长耗时方法 
            //do some hard thing;

            handler.sendEmptyMessage(0); //直接访问主线程变量handler
         }
      }.start();
}

 

 

3.AsyncTask 

//...三个点表示可变长度参数列表
new AsyncTask<URL, Integer, Long>() {
  protected Long doInBackground(URL... urls) {
    long totalSize = 0;
    //first url is urls[0]
    return totalSize;
  }

  protected void onProgressUpdate(Integer... progress) {
    setProgressPercent(progress[0]);
  }

  protected void onPostExecute(Long result) {
    showDialog("Total Size is " + result );
  }
}.execute(url1, url2, url3);

4.Loader

待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值