WEB开发网
开发学院手机开发Android 开发 android多线程问题 阅读

android多线程问题

 2012-07-06 15:29:00 来源:WEB开发网   
核心提示:2) 使用Handler这里需要了解Android SDK提供的几个线程间通讯的类,2.1 HandlerHandler在android里负责发送和处理消息,android多线程问题(2),通过它可以实现其他线程与Main线程之间的消息通讯,2.2 LooperLooper负责管理线程的消息队列和消息循环2.3 Mes

2) 使用Handler

这里需要了解Android SDK提供的几个线程间通讯的类。

2.1 Handler

Handler在android里负责发送和处理消息,通过它可以实现其他线程与Main线程之间的消息通讯。

2.2 Looper

Looper负责管理线程的消息队列和消息循环

2.3 Message

Message是线程间通讯的消息载体。两个码头之间运输货物,Message充当集装箱的功能,里面可以存放任何你想要传递的消息。

2.4 MessageQueue

MessageQueue是消息队列,先进先出,它的作用是保存有待线程处理的消息。

它们四者之间的关系是,在其他线程中调用Handler.sendMsg()方法(参数是Message对象),将需要Main线程处理的事件添加到Main线程的MessageQueue中,Main线程通过MainLooper从消息队列中取出Handler发过来的这个消息时,会回调Handler的handlerMessage()方法。

除了以上两种常用方法之外,还有几种比较简单的方法

3) Activity.runOnUiThread(Runnable)

4) View.post(Runnable)

View.postDelayed(Runnable, long)

5) Handler.post

Handler.postDelayed(Runnable, long)

4. 利用线程池提高性能

这里我们建议使用线程池来管理临时的Thread对象,从而达到提高应用程序性能的目的。

线程池是资源池在线程应用中的一个实例。了解线程池之前我们首先要了解一下资源池的概念。在JAVA中,创建和销毁对象是比较消耗资源的。我们如果在应用中需要频繁创建销毁某个类型的对象实例,这样会产生很多临时对象,当失去引用的临时对象较多时,虚拟机会进行垃圾回收(GC),CPU在进行GC时会导致应用程序的运行得不到相应,从而导致应用的响应性降低。

资源池就是用来解决这个问题,当你需要使用对象时,从资源池来获取,资源池负责维护对象的生命周期。

了解了资源池,就很好理解线程池了,线程池就是存放对象类型都是线程的资源池。

我增加了如何在其他线程中创建Handler的例子作为选学,前面都掌握好了的同学可以看一下,如果你需要实现一个跟Main线程类似的消息处理机制,需要其他线程可以跟你的线程通讯,可以通过这种方法实现。

上一页  1 2 

Tags:android 线程 问题

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接