继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Android Handler 机制剖析

jmesSehng
关注TA
已关注
手记 149
粉丝 424
获赞 5663

android的handler机制是android的线程通信的核心机制

Android UI是线程不安全的,如果在子线程中尝试进行UI操作,程序就有可能会崩溃。

Android中的实现了

接收消息的“消息队列” ——【MessageQueue】

阻塞式地从消息队列中接收消息并进行处理的“线程” ——【Thread+Looper】

可发送的“消息的格式” ——【Message】

“消息发送函数”——【Handler的post和sendMessage】

一个Looper类似一个消息泵。它本身是一个死循环,不断地从MessageQueue中提取Message或者Runnable。而Handler可以看做是一个Looper的暴露接口,向外部暴露一些事件,并暴露sendMessage()和post()函数。


  1. Params
    在执行AsyncTask时需要传入的参数,可用于在后台任务中使用。
  2. Progress
    后台任务执行时,如果需要在界面上显示当前的进度,则使用这里指定的泛型作为进度单位。
  3. Result
    当任务执行完毕后,如果需要对结果进行返回,则使用这里指定的泛型作为返回值类型。
class DownloadTask extends AsyncTask<Void, Integer, Boolean> {  
    ……  
}  

        }  
    } catch (Exception e) {  
        return false;  
    }  
    return true;  
}  

@Override  
protected void onProgressUpdate(Integer... values) {  
    progressDialog.setMessage("当前下载进度:" + values[0] + "%");  
}  

@Override  
protected void onPostExecute(Boolean result) {  
    progressDialog.dismiss();  
    if (result) {  
        Toast.makeText(context, "下载成功", Toast.LENGTH_SHORT).show();  
    } else {  
        Toast.makeText(context, "下载失败", Toast.LENGTH_SHORT).show();  
    }  
}  

}


打开App,阅读手记
20人推荐
发表评论
随时随地看视频慕课网APP