Handler里send和post方法的区别
来源:互联网 发布:移动端手风琴效果 js 编辑:程序博客网 时间:2024/06/05 20:27
在Android中handler用来进行进程间通信,其中有send和post两种方法,大家常用的send方法,其是在工作线程中处理完耗时操作后调用handler的sendMessage(message)把message对象发送给主线程,在主线程中重写handlerMessage()方法,判断接收到的消息进行更新UI的操作;而post方法传递的是一个runnable对象,更新UI的操作也是在这个runnable的run方法中进行的,也就是说run方法中的代码是执行在主线程中的,虽然它是写在工作线程中,主线程在接收到消息后自动执行runnable的run方法中的代码。
上图上代码:
public class MainActivity extends Activity { private Button btSend; private Button btPost; private TextView textview; private static final int SEND_UPDATA_TEXT=0; private Handler handler=new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case SEND_UPDATA_TEXT: textview.setText("sendMessage发来的消息"); break; default: break; } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 setViews(); //事件监听 setListener(); } private void setListener() { btSend.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { Message message=new Message(); message.what=SEND_UPDATA_TEXT; handler.sendMessage(message); } }).start(); } }); btPost.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { //使用post发送消息 handler.post(new Runnable() { //run方法中的代码执行在UI线程中 @Override public void run() { textview.setText("post发来消息"); } }); } }).start(); } }); } private void setViews() { btSend=(Button) findViewById(R.id.bt_send); btPost=(Button) findViewById(R.id.bt_post); textview=(TextView) findViewById(R.id.textview); }}
其二 解释:
SENDMESSAGE OR POSTMESSAGE 吗?
前者等到执行结果返回,后者将消息送到消息队列之后返回^_^
其三 解释:
是的,前者中断进程,后者不中断进程
其四 解释:
post是一直在等到有空闲时才执行
其五解释:
send=>挂号信
post=>平信
阅读全文
0 0
- Handler里send和post方法的区别
- handler中send和post方法的区别
- JAVA里Handler和android里Handler的区别
- handler.post和handler.sendMessage的区别和联系
- handler.post和handler.sendMessage的区别和联系
- handler.post和handler.sendMessage的区别和联系
- handler的post方法
- handler的post 方法
- Handler的post()方法
- Android中Handler的post和sendMessage的区别
- Handler的post()方法
- 关于Handler 的Post方法
- handler 的post方法解惑
- 关于Handler的Post和Message的两种方法
- ajax中的open()和send()方法的区别
- Handler中post方法的调用流程和使用场景
- 【android】handler.post方法的说明和注意事项
- Handler中post方法的调用流程和使用场景
- JavaWeb学习总结(三十六)——使用JDBC进行批处理
- 2017.7.14 学习笔记 JQ选择器的使用及JS输入框事件及获取其相对属性值
- 千万级规模高性能、高并发的网络架构
- JavaWeb学习总结(三十七)——获得MySQL数据库自动生成的主键
- JavaWeb学习总结(三十八)——事务
- Handler里send和post方法的区别
- Drying POJ
- cogs [BOI2007]摩基亚Mokia CDQ 分治
- 引用新体验!
- cuda之线程分配
- angular2路由预加载策略
- mybatis增删改应用(三)
- SQLServer 中提高查询性能的方法
- 关于ES6的 模块功能 Module 中export import的用法和注意之处