runnable与handler结合使用,其实跟在Thread中的run()中sleep的效果是一样的

这是一种可以创建多线程消息的函数
使用方法:
1,首先创建一个Handler对象
Handler handler=new Handler();
2,然后创建一个Runnable对象
Runnable runnable=new Runnable(){
   @Override
   public void run() {
    // TODO Auto-generated method stub
    //要做的事情,这里再次调用此Runnable对象,以实现每两秒实现一次的定时器操作
    handler.postDelayed(this, 2000);
   }
};
3,使用PostDelayed方法,两秒后调用此Runnable对象
handler.postDelayed(runnable, 2000);
实际上也就实现了一个2s的一个定时器
4,如果想要关闭此定时器,可以这样操作
handler.removeCallbacks(runnable);

当然,你也可以做一个闹钟提醒延时的函数试试,比如,先用MediaPlayer播放闹钟声音,
如果不想起,被停止播放之后,下次就5分钟后再播放,再被停止的话,下次就4分钟后播放,
………………
只要更改延时的时间就可以实现了,用一个static对象的话会比较容易操作。

时间: 2024-08-09 04:30:57

runnable与handler结合使用,其实跟在Thread中的run()中sleep的效果是一样的的相关文章

计时线程Runnable和Handler的结合

利用Runnable和Handler,来创建计时线程 private double recodeTime = 0;// 用于计时 private double econdTime = 0;// 用于计时 private boolean flag=true; private Thread thread;// 计时线程 private Runnable menuTimeTask = new Runnable() { public void run() { while (flag) { try { T

创建线程时如果既传入了runnable对象,又继承thread重写了run方法,会执行的哪里的代码

1 使用线程的方式,继承thread类,重写run方法 new Thread() { @Override public void run() { System.out.println("我是新的线程"); } }.start(); 重写之后,线程执行的就是我们自己的run方法,而在Thread类中的run方法就不会被执行 这是Thread类的run方法 在这个方法中判断target是否为null,不为null,才执行target的run方法 2  既传入了runnable对象,又继承t

android handler runnable使用实例(关键是内部run中停止)

.java 1 package com.example.mydemo; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.os.Handler; 6 import android.os.Message; 7 import android.view.View; 8 import android.view.View.OnClickListener; 9 import android.widget

Handler、Looper、MessageQueue、Thread源码分析

关于这几个之间的关系以及源码分析的文章应该挺多的了,不过既然学习了,还是觉得整理下,印象更深刻点,嗯,如果有错误的地方欢迎反馈. 转载请注明出处:http://www.cnblogs.com/John-Chen/p/4396268.html 对应关系:   1.Handler 不带Looper的构造器 /** * Use the {@link Looper} for the current thread with the specified callback interface * and se

Android的消息机制以及Message/MessageQueue/Handler/Looper

概览 * Message:消息.消息里面可包含简单数据.Object和Bundle,还可以包含一个Runnable(实际上可看做回调). * MessageQueue:消息队列,供Looper线程消费消息. * Looper:用于循环处理Message,一个Thread结合一个Looper来实现消息循环处理.Android App的主线程包含了Looper. * Handler:负责向当前Looper线程发送Message,并实现如何处理消息的回调,回调可放到Callback接口的实现中,也可以

Java基础_学习笔记_16_线程

1.进程与线程 进程,在多任务操作系统中,每个独立执行的程序称为进程,也就是“正在进行的程序”.进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配的最小单元. 线程,是进程中的一部分,是一个程序内部的一条执行线索.在网络或多用户环境下,一个服务器需要接受大量且不确定用户数量的并发请求,为每一个请求创建一个进程显然是行不通的,因此引入了线程.线程是最小的调度单元.通常在一程序中实现多段代码同时交替运行时,需要产生多个线程,并制定每个线程上所要运行的程序代码块,这就

android利用GPS和高德地图获取定位案例

一.main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" an

android基础:获取GPS定位简单实例

位置信息在日志中输出 package com.mytest; import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.location.Criteria; import android.location.GpsStatus; import android.location

GPS

1.申请用户权限 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 2.Java代码 import java.util.Iterator; import android.app.Activit