在Android开发中,定时执行任务的3种实现方法:
一、采用Handler与线程的sleep(long)方法(不建议使用,java的实现方式)
二、采用Handler的postDelayed(Runnable, long)方法(最简单的android实现)
三、采用Handler与timer及TimerTask结合的方法(比较多的任务时建议使用)
下面逐一介绍:
一、采用Handle与线程的sleep(long)方法
Handler主要用来处理接受到的消息。这只是最主要的方法,当然Handler里还有其他的方法供实现,有兴趣的可以去查API,这里不过多解释。
1. 定义一个Handler类,用于处理接受到的Message。
Handler handler = new Handler() {
public void handleMessage(Message msg) {
// 要做的事情
super.handleMessage(msg);
}
};
2. 新建一个实现Runnable接口的线程类,如下:
public class MyThread implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
try {
Thread.sleep(10000);// 线程暂停10秒,单位毫秒
Message message = new Message();
message.what = 1;
handler.sendMessage(message);// 发送消息
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
3. 在需要启动线程的地方加入下面语句:
new Thread(new MyThread()).start();
4. 启动线程后,线程每10s发送一次消息。
二、采用Handler的postDelayed(Runnable, long)方法
这个实现比较简单一些。
1. 定义一个Handler类
Handler handler=new Handler();
Runnable runnable=new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//要做的事情
handler.postDelayed(this, 2000);
}
};
2. 启动计时器
handler.postDelayed(runnable, 2000);//每两秒执行一次runnable.
3. 停止计时器
handler.removeCallbacks(runnable);
三、采用Handler与timer及TimerTask结合的方法
1. 定义定时器、定时器任务及Handler句柄
private final Timer timer = new Timer();
private TimerTask task;
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
// 要做的事情
super.handleMessage(msg);
}
};
2. 初始化计时器任务
task = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
3. 启动定时器
timer.schedule(task, 2000, 2000);
3. 停止计时器
timer.cancel();
简要说一下上面三步提到的一些内容:
1. 定时器任务(TimerTask)顾名思义,就是说当定时器到达指定的时间时要做的工作,这里是想Handler发送一个消息,由Handler类进行处理。
2. java.util.Timer.schedule(TimerTask task, long delay):这个方法是说,dalay/1000秒后执行task.只执行一次。
java.util.Timer.schedule(TimerTask task, long delay, long period):这个方法是说,delay/1000秒后执行task,然后进过period/1000秒再次执行task,这个用于循环任务,执行无数次,当然,你可以用timer.cancel();取消计时器的执行。
每一个Timer仅对应唯一一个线程。
Timer不保证任务执行的十分精确。
Timer类的线程安全的。
分享到:
相关推荐
android中定时有很多种是实现,常见的Handler 与Thread的结合,handler.postDelayed ,以及要使用的AlarmManger 等都可以实现定时任务的执行,但是使用场景却大不相同,这里主要是怎么用AlarmManager实现定时任务。...
本文将详细介绍三种在Android中实现定时任务的方法,并分析各自的优缺点。 一、使用Handler与线程的`sleep(long)`方法 这种方法是基于Java的线程机制,通过`Thread.sleep()`方法让线程休眠指定时间,然后发送消息到...
在Android平台上,定时执行任务是常见的需求,例如自动发送消息、更新应用数据或者像这个例子中的自动拨打电话。实现这样的功能通常涉及到Android的AlarmManager服务和IntentService组件。接下来,我们将详细探讨...
本压缩包文件"android定时器实现每天定时执行任务.rar"可能包含了一个示例项目,用于演示如何在Android中设置每日定时任务。 首先,Android中的定时器(java.util.Timer)并不是线程安全的,也不推荐在Android中...
本文将基于“Android定时执行任务总结demo”进行深入探讨,讲解如何在Android系统中设置定时任务。 首先,Android提供了多种定时任务的实现方式,包括`AlarmManager`、`Handler`、`ScheduledExecutorService`以及...
在Android开发中,有时我们需要实现延时或重复执行的任务,比如定时更新UI、定期发送心跳包、延时启动服务等。这些需求可以通过多种方式来实现,包括`Timer`、`Handler`、`Thread`以及`AlarmManager`。下面将详细...
6、android 后台定时执行任务 示例源码 7、C# Quatrz定时任务job实现 8、Quartz.NET定时任务框架实例(移植Quartz.Net定时任务框架,实现可配置的执行定时任务) 9、spring+quartz动态定时任务创建 +mybatis(包含...
3. **添加任务**:使用`TimeTask`提供的方法将任务添加到相应的任务组中,并设置执行参数。 4. **启动任务队列**:在合适的时候启动任务队列,例如在应用启动时。 5. **监听和管理**:注册事件监听器,以便在任务...
创建一个`Runnable`对象并在`Handler`的`postDelayed()`方法中指定延迟时间,可以实现定时执行任务。然而,这种方法并不适合长时间或跨组件的任务,因为它依赖于主线程的消息循环。 在"AlarmServiceDemo"这个压缩包...
`TimerTask`和`Timer`虽然简单易用,但它们并不是Java中唯一实现定时任务的方法。在更复杂的场景下,例如需要更精确的控制或者更高的并发性能,可以考虑使用`ScheduledExecutorService`,它是Java并发框架`java.util...
总之,`AlarmManager`是Android开发中实现定时任务的关键工具,通过合理使用它可以实现各种定时功能,但需注意系统版本差异和电源管理策略。`AlarmManagerDemo`项目提供了实践这些概念的实例,帮助开发者更好地理解...
在Android开发中,`AlarmManager`是系统服务之一,它允许应用在指定的时间或周期性地执行任务。本文将深入探讨如何使用`AlarmManager`来实现多个定时且重复的提醒功能。 首先,我们需要理解`AlarmManager`的工作...
在Android开发中,定时任务的实现对于应用的功能扩展至关重要,比如自动刷新数据、倒计时、动画帧更新等。常见的实现方法有三种:基于Handler与线程的sleep(long)方法、Handler的postDelayed(Runnable, long)方法...
通过创建一个Handler实例并将其与Looper关联,我们可以发送延迟的消息或Runnable对象,从而实现定时执行任务。例如,我们可以通过`postDelayed(Runnable r, long delayMillis)`方法来安排一个Runnable在特定时间后...
1)Service默认运行在主线程中,IntentService运行在一个新的线程中 2)Service需要主动调用stopSelf()或stopService()服务才可以停止,IntentService运行完后自动停止 使用IntentService需要注意2点: 1)构造函数中...
### Android 定时执行:利用 AlarmManager 进行任务调度 在 Android 开发过程中,有时候我们需要应用程序能够在特定的时间点或周期性地执行某些任务。为了实现这一需求,Android 提供了 `AlarmManager` 类,它可以...
以下将详细讲解如何在Android中实现这些功能。 首先,我们要了解Android系统的启动流程。开机时,Android会通过Bootloader加载kernel,然后kernel启动init进程,init进程会根据系统配置启动各种服务和应用。如果要...
在Android系统中,定时开关机功能是通过修改framework层的代码来实现的。这个功能对于设备管理和自动化操作具有重要意义,特别是在服务器维护、节能控制或测试环境中。本项目提供了Android 8.1版本的定时开关机的...
标题"Alarm.7z,Android定时任务"表明这是一个与Android平台上的定时任务相关的项目或库,可能包含了实现这一功能的相关代码和资源。 在Android中,主要使用以下几种方式来实现定时任务: 1. **AlarmManager**: 这...