分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

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(10000);                } 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中打印空间内容就可验证。

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

handler post r 同一个线程的疑惑相关推荐

  1. handler.post(r)同一个线程的疑惑

    handler.post(r);是把r加到消息队列,但并未开辟新线程.等到消息被取出时才执行. package com.lei.handlethread;import android.os.Bundl ...

  2. 源码分析Android Handler是如何实现线程间通信的

    源码分析Android Handler是如何实现线程间通信的 Handler作为Android消息通信的基础,它的使用是每一个开发者都必须掌握的.开发者从一开始就被告知必须在主线程中进行UI操作.但H ...

  3. Handler之创建子线程Handler

    Handler之创建子线程Handler Android的消息机制实现步骤: ①创建当前线程的looper ②创建当前线程的handler ③调用当前线程looper的loop方法 要实现创建子线程H ...

  4. QT下信号与槽不在同一个线程中如何connect

    QT下信号与槽不在同一个线程中如何connect

  5. C++ 多线程——pthread_cancel 取消线程的疑惑

    C++ 多线程--pthread_cancel 取消线程的疑惑 测试环境:Ubuntu18.04 pthread_cancel 简介 pthread_cancel(threadID)会发送终止信号给t ...

  6. Java同一个线程对象能否多次调用start方法

    同一个线程对象能否多次调用start方法,搞清楚这个问题,首先需要了解线程的生命周期 一.线程生命周期 更多线程状态细节描述可查看Thread内部枚举类:State 从上图线程状态转换图可以看出: 新 ...

  7. AndroidStudio_Android中使用Handler实现非阻塞线程间通讯_跨线程更新UI_耗时处理完成后主动通知更新UI_在同一个activity用---Android原生开发工作笔记219

    其实也是很简单的,比如,我们要是在android中去访问,http请求服务器的话,那么这个时候,UI线程不会一直等着,你访问完成,再去更新UI,因为这样 会导致看起来卡顿. 这个时候可以这样: 例如我 ...

  8. Android异步机制一:使用Thread+Handler实现非UI线程更新UI界面

    概述:每个Android应用程序都运行在一个dalvik虚拟机进程中,进程开始的时候会启动一个主线程(MainThread),主线程负责处理和ui相关的事件,因此主线程通常又叫UI线程.而由于Andr ...

  9. 【Android 异步操作】手写 Handler ( Message 消息 | ThreadLocal 线程本地变量 | Looper 中的消息队列 MessageQueue )

    文章目录 一.Message 消息 二.ThreadLocal 线程本地变量 三.Looper 中的消息队列 MessageQueue 一.Message 消息 模仿 Android 中的 Messa ...

最新文章

  1. Javascript 中 apply、call、bind
  2. LeetCode 1151. 最少交换次数来组合所有的 1(滑动窗口)
  3. It was in 2006, and as a desktop computer
  4. 项目方说性能达到百万TPS,如何测试它的可信度?
  5. Rust: tokio,异步代码与运行速度初探
  6. k2p拆机ttl刷breed_【1.10】k2p A版 22.10.3.42;22.10.3.38;拆机TTL刷BREED;B版 21.6.25.20刷机 图文教程...
  7. Oracle数据库实验报告六 PL/SQL基础
  8. Java实现多种格式上传视频资源、解析视频格式、视频截图处理
  9. 安装vue-cli脚手架使用swiper
  10. windows怎么设置始终以管理员身份运行
  11. 需要密码才能打开的word文件
  12. 办公邮箱怎么选,邮箱选哪个更好用?
  13. Zookeeper框架Curator使用
  14. 笔记本未指定打印机服务器,打印机出现在未指定里怎么办?可以这样解决
  15. wx:if 与wx:else
  16. 什么是数据清洗?数据清洗的原理是什么?
  17. macd金叉公式成功率_MACD金叉kdj死叉和20日线可靠吗
  18. Linux系统发展历史
  19. markdown表情
  20. 最大熵,三硬币模型的R语言代码

热门文章

  1. C#中Delegate和Event以及它们的区别(转载)
  2. Android之使用Jsoup抓取网络数据
  3. [Ruby编程语言].弗拉纳根_松本行弘读书笔记
  4. 凌轩:中国电信在校园市场的困与囧
  5. D-Link防火墙操作初步
  6. 财会小白的办公室自救指南
  7. 自学习 与 无监督特征学习
  8. 百度语音识别demo:去掉离线识别功能
  9. 20150920 DNS服务
  10. 程序员最害怕的5件事 你中招了吗?