我有一个带有按钮的活动。当我按下那个按钮时,应该每 10 分钟调用一次方法。
我正在尝试使用 aHandler
和 a来做到这一点Timer
。但无法得到结果。
我有一个带有按钮的活动。当我按下那个按钮时,应该每 10 分钟调用一次方法。
我正在尝试使用 aHandler
和 a来做到这一点Timer
。但无法得到结果。
创建一个Timer
对象并给它一个TimerTask
执行您想要执行的代码的对象。
Timer timer = new Timer ();
TimerTask hourlyTask = new TimerTask () {
@Override
public void run () {
// your code here...
}
};
// schedule the task to run starting now and then every hour...
timer.schedule (hourlyTask, 0l, 1000*60*60); // 1000*10*60 every 10 minut
使用 Timer 对象的优点是它可以处理多个 TimerTask 对象,每个对象都有自己的计时、延迟等。您还可以通过将 Timer 对象声明为类来启动和停止定时器变量什么的。
使用以下代码,其中 notifyme() 在您作为第二个参数给出的毫秒数之后被重复调用
Timer timer = new Timer();
timer.schedule(new TimerTask()
{
public void run()
{
View v = new View(getApplicationContext());
notifyMe(v);
}},4000,100000);
}
如果您不需要在后台运行您的应用程序,请使用AlamManager 。否则,您可以拥有一个不断运行的服务和一个CountDownTimer
警报管理器适用于您希望应用程序代码在特定时间运行的情况,即使您的应用程序当前没有运行。
对于正常的计时操作(滴答声、超时等),使用 Handler 更容易、更高效。
-它更好用Service
,它Activity
没有 View
。
- Service
可以有界或无界到Activity
.
有关服务示例,请参阅此链接:
http://www.vogella.com/articles/AndroidServices/article.html
-但是,如果您仍然想使用 Thread,那么试试这个...
1.如果你的Thread
(Non-UI)没有在Dedicated UI线程上发布任何数据,那么就没有必要使用Handler,但如果是,那么Handler是必须的。
例如:
Handler h;
onCreate() {
h = new Handler();
new Thread(new Runnable() {
public void run(){
while(true){
try{
h.post(new Runnable(){
public void run(){
go();
}
}
TimeUnit.MINUTES.sleep(10);
}
catch(Exception ex){
}
}
}
}).start();
}
public void go(){
// This method is called every 10 minutes
}
Painless Threading
您也可以使用称为的东西来做同样的事情AsyncTask
。