handler线程的输出疑惑

gaohongijj 2012-04-05 04:59:13


进来编写了一个小程序,想测试一下消息队列中语句的输出顺序,及实现的Runnable接口r是否和activity这个线程在同一个线程内,结果为:
(1)activityId->
(2)activityName->

(3)threadId->
(4)threadName->

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;

public class HandlerTest2 extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

handler.post(r);
System.out.println("(1)activityid-->"+Thread.currentThread().getId());
System.out.println("(2)activityid-->"+Thread.currentThread().getName());

}
Handler handler = new Handler();
Runnable r= new Runnable(){

public void run() {
System.out.println("(3)threadId->"+Thread.currentThread().getId());
System.out.println("(4)threadName->"Thread.currentThread().getName());

}

};
}

为什么不是:
(3)threadId->
(4)threadName->

(1)activityId->
(2)activityName->

按照程序的执行顺序,先执行handler.post(r);
调用的是r对象中的run()先输出(3)(4)才对啊 。。怎么先输出(1)(2)啊?????????
请高手赐教。。。。




...全文
106 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaohongijj 2012-04-07
  • 打赏
  • 举报
回复
我仔细琢磨了一下,,handler的post方法把runnable对象做为参数传进去,其实,它并没有启动一个新的线程,还是在主线程里面运行,(在handler和activity中都输出当前的线程的id,可以看到id是一样的)没有主从线程之分,是同一个线程,handler类里面也没有实现looper取消息的功能,handlerThread类里才实现了looper循环取消息的功能,,,,,System.out.println 不属于UI线程,实时打印。。。
Marco_Lee 2012-04-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

android里面主线程先于子线程执行,子线程要等主线程执行完后,才能执行
[/Quote]

这个跟子线程有什么关系?
gaohongijj 2012-04-05
  • 打赏
  • 举报
回复
csdn里面的高手就是多,,,佩服,,,努力学习,,怀着感恩的心,,看到我会的问题,,有时间,我一定认真回答,,,就算是把这份对初学者的关爱传递下去。。
Marco_Lee 2012-04-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

System.out.println 不属于UI线程,实时打印
而handler需要等activity初始化完成后才会运行。
[/Quote]

对。。Handler确实是在onResume之后才运行,自己实验了一下,受教了
life02 2012-04-05
  • 打赏
  • 举报
回复
android里面主线程先于子线程执行,子线程要等主线程执行完后,才能执行
danielinbiti 2012-04-05
  • 打赏
  • 举报
回复
System.out.println 不属于UI线程,实时打印
而handler需要等activity初始化完成后才会运行。
Marco_Lee 2012-04-05
  • 打赏
  • 举报
回复
post是把Runnable压倒消息队列中,主线程还是继续向下执行的,而同时Looper在不断地向消息队列取消息,
这样情况,因为1和2的输出在Looper取出消息之前就完成了。

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧