Android 开发之多线程处理、Handler 详解(3)

发表于:2013-05-28来源:intel software作者:Ternence Zhang点击数: 标签:Android
sendEmptyMessage (int what) final boolean sendEmptyMessageAtTime (int what, long uptimeMillis) final boolean sendEmptyMessageDelayed (int what, long delayMillis) final boolean sendMessage ( Message ms
sendEmptyMessage(int what)

final boolean

sendEmptyMessageAtTime(int what, long uptimeMillis)

final boolean

sendEmptyMessageDelayed(int what, long delayMillis)

final boolean

sendMessage(Message msg)

final boolean

sendMessageAtFrontOfQueue(Message msg)

boolean

sendMessageAtTime(Message msg, long uptimeMillis)

final boolean

sendMessageDelayed(Message msg, long delayMillis)

  MessageQueue

  是一种数据结构,见名知义,就是一个消息队列,存放消息的地方。每一个线程最多只可以拥有一个MessageQueue数据结构。

  创建一个线程的时候,并不会自动创建其MessageQueue。通常使用一个Looper对象对该线程的MessageQueue进行管理。主线程创建时,会创建一个默认的Looper对象,而Looper对象的创建,将自动创建一个Message Queue。其他非主线程,不会自动创建Looper,要需要的时候,通过调用prepare函数来实现。

  java.util.concurrent对象分析

  对于过去从事Java开发的程序员不会对Concurrent对象感到陌生吧,他是JDK 1.5以后新增的重要特性作为掌上设备,我们不提倡使用该类,考虑到Android为我们已经设计好的Task机制,我们这里Android开发网对其不做过多的赘述。

  Task以及AsyncTask

  在Android中还提供了一种有别于线程的处理方式,就是Task以及AsyncTask,从开源代码中可以看到是针对Concurrent的封装,开发人员可以方便的处理这些异步任务。 当然涉及到同步机制的方法和技巧还有很多,考虑时间和篇幅问题不再做过多的描述。

原文转自:http://software.intel.com/zh-cn/blogs/2013/05/08/android-handler/?utm_campaign=CSDN&utm_source=intel.csdn.net&utm_medium=Link&utm_content=%20intelandroid%20%e2%80%93%20Handler