android.os.Handler是Android SDK中处理定时操作的核心类。通过Handler类,可以提交和处理一个Runnable对象。这个对象的run 方法可以立刻执行,也可以在指定时间之后执行(可以称为预约执行)。
handler类允许你发送消息和处理线程消息队列中的消息及runnable对象。handler实例都是与一个线程和该线程的消息队列一起使用,一旦创建了一个新的handler实例,系统就把该实例与一个线程和该线程的消息队列捆绑起来,这将可以发送消息和runnable对象给该消息队列,并在消息队列出口处处理它们。
handler类有两种主要用途:
1、按照时间计划,在未来某时刻,对处理一个消息或执行某个runnable实例。
2、把一个对另外线程对象的操作请求放入消息队列中,从而避免线程间冲突。
时间类消息通过如下方法使用:
post(Runnable)
postAtTime(Runnable, long)
postDelayed(Runnable, long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message, long)
andsendMessageDelayed(Message, long)
methods. post之类函数可以传输一个runnable对象给消息队列,并在到达消息队列后被调用。sendmessage之类函数可以传送一个包含数据的message对象,该message对象可以被Handler类的handleMessage(Message) 方法所处理。
post之类函数和sendmessage之类的函数都可以指定消息的执行时机,是立即执行、稍后一段时间执行,还是在某个确定时刻执行。这可以用来实现超时、消息或其他时间相关的操作。
当一个进程启动时,主线程独立执行一个消息队列,该队列管理着应用顶层的对象(如:activities、broadcast receivers等等)和所有创建的窗口。你可以创建自己的一个线程,并通过handler来与主线程进行通信。这可以通过在新的线程中调用主线程的handler的post和sendmessage操作来实现。
Handler类主要可以使用如下3个方法来设置执行Runnable对象的时间:

从上面的三个方法可以看出,第一个参数的类型都是Runnable ,因此,在调用这三个方法之前,需要有一个实现Runnable接口的类,Runnable接口的代码如下:

在Runnable接口中只有一个Run 方法,该方法为线程执行方法。

如果想在5秒内停止记时可以用如下代码:

除此之外还可以用postAtTime方法指定未来的某一个精确时间来执行Runnable对象,代码如下:

其中RunToast是一个实现Runnable的接口的类,代码如下:
postAtTime的第二个参数表示一个精确的时间的毫秒数,如果从当前时间算起,需要使用android.os.SystemClock.uptimeMillis()获得基准时间。
要注意的是,不管使用哪个方法来执行Runnable对,都只能运行一次。如果想循环执行,必须在执行完后再次调用post、postAtTime或postDelayed方法。
例如,在Run方法中再次调用postDelayed方法,代码如下:

下面是一个运用实例:
完整代码如下:csf.java

布局文件代码如下:main.xml
运行后,单击 [开始计数] 按钮,5秒后,会在按钮上方显示计数信息。然后单击 [15秒后显示Toast信息框] 按钮,过15秒后,会显示一个Toast信息框。








更多相关文章

  1. Android视图加载到窗口的过程
  2. Android调用so文件(C代码库)方法详解
  3. Android理解 Window 与 WindowManager
  4. Android(安卓)Binder入门指南之getService详解之请求的反馈
  5. Android(安卓)Gradle构建-理解DSL语言以及运行机制
  6. 关于Android实现滑动返回的几种方法总结
  7. Android中Thread、Handler、Looper、MessageQueue的原理分析
  8. WebView用法与JS交互
  9. Android(安卓)中音频视频开发

随机推荐

  1. Android读写XML(中)——SAX
  2. AirPods怎么连接Android设备 AirPods与安
  3. Android(安卓)入门文档_Android(安卓)4.0
  4. Android项目源码混淆问题解决方法
  5. android的系统优势
  6. Android(安卓)高级面试题及答案,android试
  7. 自定义Android标题栏修改TitleBar的布局
  8. Android开发平台振动器系统详解
  9. Android系统
  10. Intent详解(二)----Intent过滤器