转自:http://apps.hi.baidu.com/share/detail/23830725
在android中,經常用到的定時器主要有以下幾種實現:
一、採用Handler與線程的sleep(long
)方法
二、採用Handler的postDelayed(Runnable, long)
方法
三、採用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=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);
簡要說一下上面三步提到的一些內容。
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();取消計時器的執行。
-------------------------------------------------------------2011/3/23------------------------------------------------------------------
如果我們採用第一種方法,如何結束掉線程呢?當然如果你的程序在run方法裡有做控制,線程就不用結束,當run方法運行完畢,線程也就隨之結束。那今天就說一下在Handler裡面對線程的控制,如果想要在Handler裡面結束線程,可用:
Thread.currentThread().interrupt();
Thread.currentThread()可以獲得消息發送的線程,interrupt即是中斷。
分享到:
相关推荐
### Android定时器的三种实现方式 在Android应用开发过程中,定时任务是非常常见的一种需求场景,例如更新UI界面、定期检查网络状态或者定时提醒等。本文将详细介绍三种常用的Android定时器实现方式及其具体应用...
总结起来,Android定时器结合Handler和Message是实现UI动态更新的有效方式,尤其在游戏开发中,这种机制常用于创建流畅的动画效果和实时的游戏逻辑。通过合理使用这些组件,开发者可以为用户提供更丰富的交互体验。
android开发中常用的线程通信,消息发送和接收,消息处理及定时器的使用
Android提供了两种主要的定时器实现:Java.util.Timer和AlarmService。这两种方法各有特点,适用于不同的场景。 首先,Java.util.Timer是Java标准库中的类,它允许开发者安排在特定时间运行的任务。在Android中,...
总结来说,这个“android定时器的demo”涵盖了Android开发中的关键知识点:使用`CountDownTimer`实现倒计时、通过`Random`生成随机数用于模拟登录验证,以及利用`WebView`加载和显示本地HTML文件。这些技能对于...
总结来说,解决Android中的定时器问题,关键在于理解Android的UI更新机制,合理使用线程,以及确保良好的定时器管理。通过优化定时器的使用,可以避免图片闪烁、错位和时间不同步等问题,提高用户界面的流畅性和应用...
总结,Android中的定时器功能可以通过`Handler`实现简单的定时任务,而`AlarmManager`适用于更精确或长期的定时需求。开发者应根据实际场景选择合适的方法,同时关注性能和电池消耗。在使用过程中,确保正确管理和...
总结,Android应用中的定时器是实现各种定时功能的关键,如轮询服务、倒计时、自动更新等。理解其工作原理和正确使用方法,对于提升应用体验和性能至关重要。通过学习提供的源代码,可以深化对定时器实际应用的理解...
本文将详细介绍三种实现Android定时器的方法,并提供相应的代码示例。 ### 方法一:Handler + Thread 这种方法利用了Android的消息机制。首先创建一个`Handler`对象,然后在一个后台线程(通常是一个`Thread`)中...
总结,`AlarmManager`是Android中进行定时任务调度的重要工具,可以灵活地启动BroadcastReceiver、Service和Activity。在实际开发中,应根据需求选择合适的启动方式,并注意优化以降低对系统资源的影响。
总结来说,Android的定时器机制为开发者提供了灵活的定时任务处理方式。了解并熟练掌握`AlarmManager`、`Handler`以及`CountDownTimer`的使用,将对提升Android应用的功能性和用户体验大有裨益。在实际开发中,应...
本文将详细介绍三种常见的Android定时器机制及其使用区别。 首先,我们来看第一种方式,即通过Handler与线程的`sleep(long)`方法配合。这种方式的核心在于创建一个Handler实例来处理接收到的消息,以及一个实现了...
总结来说,Android开发中,`Timer`用于计划定时任务,`Handler`则用于在主线程中处理来自其他线程的消息,以确保UI更新的安全性。同时,`Runnable`可以与`Handler`结合,实现延时或周期性的任务执行。理解并熟练掌握...
在这个demo中,我们重点关注`AlarmManager`,它是Android系统级的定时器,适用于长时间、低频率的任务调度。 1. **AlarmManager**: - `AlarmManager`是Android系统服务,可以安排一次性或者周期性的任务。通过`...
在Android开发中,定时任务是十分常见的需求,例如...总结,Android中的定时器选择取决于具体需求,如任务类型、执行频率、对精确度的要求以及电池效率。开发者应根据实际应用场景,合理选择并使用合适的定时器机制。
Android中实现定时器的四种方式 第一种方式利用Timer和TimerTask 1、继承关系 java.util.Timer 基本方法 schedule 例如: timer.schedule(task, delay,period); //delay为long,period为long:从现在起过delay毫秒...
总结起来,这个`android demo`提供了一个实用的示例,帮助开发者掌握如何在Android环境中利用`Runnable`和`Handler`实现定时任务。这种技术在游戏、实时数据刷新、动画以及其他需要定时执行操作的场景下都非常常见。...
总结来说,Android中使用Handler + Runnable实现定时器是一种常用且灵活的方法。需要注意的是,当涉及到Activity的生命周期时,必须谨慎处理Runnable对象的生命周期,以防止出现定时器无法正常关闭的情况。对于长...
总结来说,Android开发中,结合使用时间定时器和Handler可以方便地实现定时任务,比如定时刷新界面或定时验证短信。这种技术在很多应用场景中都是必不可少的,比如实时数据显示、自动刷新数据等。通过熟练掌握和应用...
总结一下,Android的倒计时和计时器机制提供了丰富的功能,用于处理时间相关的任务。`CountDownTimer`适合简单的倒计时场景,而`Timer`和`TimerTask`更适合需要周期性执行任务的情况。在实际开发中,结合线程管理,...