关于Android中Handler和Looper机制的两个问题

小牧 发布于 2013/09/10 00:27
阅读 1K+
收藏 1

学习了一段时间的Handler 和 Looper。 一般Android主线程会自定创建一个Looper 。 但是看到好多人都会在非主线程也调用Looper.prepare()  ... Looper.loop()  ;

1.  如果是想要在非主线程中处理消息,为啥不可以在主线程中创建的Handler在非主线程中发送消息给主线程处理呢。 

2.  看到好多人在非主线程中Looper.prepare() .... Loop.loop() 之间运行自己的代码,并没有消息处理的Handler。 不知道这是为了达到什么目的。
加载中
1
猎户座
猎户座

1,可以哈。直接调用Looper.prepareMainLooper();.......Looper.loop();

2,这样可以在子线程里创建消息队列。就可以用Toast,或者修改UI等。好处不少哦。不一定需要handle。

小牧
小牧
感谢亲的解答。 第二个问题帮到我了。呵呵, 第一个问题我其实是想知道既然主线程中的handler就能解决所有的消息处理,那么就不需要其他的线程再重复这件事情了。重复这件事情的话的好处有哪些呢。
0
竹蜻蜓O_0纸飞机
竹蜻蜓O_0纸飞机

一些耗时的操作比如网络连接与后台交互等在android2.X之后规定不能写在主线程中,具体是2.几我忘记了 ,呵呵

小牧
小牧
xieixe !
0
小牧
小牧

引用来自“猎户座”的答案

1,可以哈。直接调用Looper.prepareMainLooper();.......Looper.loop();

2,这样可以在子线程里创建消息队列。就可以用Toast,或者修改UI等。好处不少哦。不一定需要handle。

0
chenganshi
chenganshi

引用来自“小牧”的答案

引用来自“猎户座”的答案

1,可以哈。直接调用Looper.prepareMainLooper();.......Looper.loop();

2,这样可以在子线程里创建消息队列。就可以用Toast,或者修改UI等。好处不少哦。不一定需要handle。

链接里的说的比较清楚的,其中一个例子主线程、子线程相互通信的演示不错。
shou_mucang
shou_mucang
qq
返回顶部
顶部