handler.post(r);是把r加到消息队列,但并未开辟新线程。等到消息被取出时才执行。

package com.lei.handlethread;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import android.widget.Button; public class MainActivity extends Activity {
private Button btn = null;
private Handler handler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
handler.post(r);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.hello);// 用来验证setContentView()先执行的。
String s=(String) btn.getText();//
System.out.println(s);
System.out.println("activity--->"+Thread.currentThread().getId());
System.out.println("Activityname--->"+Thread.currentThread().getName());
} Runnable r = new Runnable() {
public void run() {
System.out.println("handler--->"+Thread.currentThread().getId());
System.out.println("handlername--->"+Thread.currentThread().getName());
try {
Thread.sleep();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }; @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}

运行结果:logCat先打印如下信息。程序运行界面过10s显示TextView文字。

解释:

main线程从消息泵中取出一个消息,处理(执行相关函数),然后再取一个,处理。所以onCreate是某一消息处理中的执行,其中post一个消息,只是把消息加入队列了,还没执行新消息,什么时候执行?要等前一个消息处理完,再次从消息泵中取消息处理时,它才被执行。

所以先是main的system.out,再是post的system.out

相比之下,sendMessage是同步执行,用handler.sendMessage,那顺序就变了。

至于setContentView(R.layout.activity_main);肯定是最先执行,程序界面最先打开了,但是界面空间要等到Activity的Resume(即交互阶段)阶段才会显示。通过获取界面空间ID,在Log中打印空间内容就可验证。

最新文章

  1. Senparc.Weixin.MP SDK 微信公众平台开发教程(十八):Web代理功能
  2. AsyncTask 异步处理
  3. ajax请求!
  4. RCP: MANIFEST.MF, plugin.xml, build.properties三种文件的区别
  5. 继续说一下2016里面的json功能(1)
  6. 【UOJ】【UR #2】猪猪侠再战括号序列(splay/贪心)
  7. rsync同步时报“auth failed on module”错误的可能原因
  8. oracle ibatis 存储过程 返回游标 嵌套表
  9. 探求C#.Net中ArrayList与Array的区别 【转】
  10. ZOJ2849 优先队列BFS
  11. Eclipse常用快捷键记录
  12. Linux系统下用户与组的管理
  13. TensorFlow 2.0 Alpha pip安装指令
  14. asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程
  15. echarts柱状图点击阴影部分触发事件
  16. Hbase CMS GC 调优。
  17. golang协程踩坑记录
  18. 【转】Word之表格、图片的题注(抬头)自动编号
  19. awk基本用法
  20. kindeditor富文本编辑器初步使用教程

热门文章

  1. JVM调优之jstack找出发生死锁的线程
  2. HDU 4622 多校第三场1002 后缀自动机
  3. js事件防止冒泡
  4. undo损坏故障恢复(二)ORA-01092,ORA-00604,ORA-01110
  5. memcache实现公共计数器网站
  6. Toast的使用具体解释
  7. Android导出jar包后的资源使用问题
  8. [转] jquery 使用方法
  9. 完美解决Android完全退出程序(转)
  10. Jquery~$when_done_then的用法