转载自:http://www.eoeandroid.com/thread-93732-1-1.html

关键词

  Android.os.Handler涉及较多的知识点,我把一些关键词列举在下面,将主要介绍Handler:

java代码:
android.os.Handler 、 android.os.Handler.Callback

Looper、Threadle、Runnable

Message、Message queue

android.os.Handler
复制代码
  Handler在android里负责发送和处理消息。它的主要用途有:

  1)按计划发送消息或执行某个Runnanble(使用POST方法);
  2)从其他线程中发送来的消息放入消息队列中,避免线程冲突(常见于更新UI线程)

  默认情况下,Handler接受的是当前线程下的消息循环实例(使用Handler(Looper looper)、Handler(Looper looper, Handler.Callback callback)可以指定线程),同时一个消息队列可以被当前线程中的多个对象进行分发、处理(在UI线程中,系统已经有一个Activity来处理了,你可以再起若干个Handler来处理)。在实例化Handler的时候,Looper可以是任意线程的,只要有Handler的指针,任何线程也都可以sendMessage。Handler对于Message的处理不是并发的。一个Looper 只有处理完一条Message才会读取下一条,所以消息的处理是阻塞形式的(handleMessage()方法里不应该有耗时操作,可以将耗时操作放在其他线程执行,操作完后发送Message(通过sendMessges方法),然后由handleMessage()更新UI)。

  倒计时程序

  利用Timer 编写一个倒计时程序,程序使用Timer和TimerTask来完成倒计时,同时使用sendMessages方法发送消息,然后在HanleMessage里更新UI。

  Activity布局:

java代码:
android:id="@+id/btnStartTime"

android:text="开始计时"

android:layout_width="80dip" android:layout_height="wrap_content" >

android:id="@+id/btnStopTime"

android:text="停止计时"

android:layout_width="80dip" android:layout_height="wrap_content" />
复制代码
这里使用TextView来显示倒计时的时间变化,两个按钮用于控制时间的开始和停止。SeekBar主要是用于查看线程是否被阻塞(阻塞时无法拖动)。

java代码:
@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);



txt = (TextView) findViewById(R.id.txt);

btnStart = (Button) findViewById(R.id.btnStartTime);

btnStop = (Button) findViewById(R.id.btnStopTime);

Log.d("ThreadId", "onCread:"+ String.valueOf(Thread.currentThread().getId()));



myHandler = new Handler(this);

btnStart.setOnClickListener(this);

btnStop.setOnClickListener(this);

}

更多相关文章

  1. Android不常用代码(1)
  2. Android获取网页源代码
  3. android中执行线程的部分代码
  4. android 学习笔记有用代码片段(3)
  5. Android实现多线程断点下载的方法
  6. Android各代码层获取系统时间的方法
  7. Android线程池(四)ThreadPoolExecutor类源码解析
  8. Android开发 开启闪光灯 关键代码
  9. Android非UI线程更新UI的几种方法

随机推荐

  1. android源码分享之蓝虫火车票余票查询源
  2. android与webservice通信之中文乱码问题!
  3. android通过shape.xml制作渐变背景
  4. Android listview中使用button解决方法
  5. android apilevel和android系统版本对应
  6. Android动态壁纸开发
  7. android PhoneGap JQuery Mobile Demo
  8. android studio多渠道号,多包名打包
  9. Android SDK,API版本对照
  10. Android开发技术文章整理