我有一个按钮的活动。 当我按下该按钮,一个方法应该是每隔10分钟调用。
我想这样做,使用Handler
和一个Timer
。 但无法得到的结果。
我有一个按钮的活动。 当我按下该按钮,一个方法应该是每隔10分钟调用。
我想这样做,使用Handler
和一个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
该报警管理的目的是为在您希望您的应用程序代码在特定时间运行的情况下,即使你的应用程序当前未运行。
对于正常的定时操作(蜱,超时,等等)更容易和更有效地使用处理程序。
-其更好地利用Service
,它的Activity
,而不 View
。
- Service
可以界或无界的Activity
。
请参阅此链接服务示例:
http://www.vogella.com/articles/AndroidServices/article.html
-但是,如果你还愿意去与线程,那么试试这个...
1.如果你的Thread
(非UI) 不张贴专用UI线程上的任何数据,那么就没有必要用处理器,但如果是的话那么处理程序是必须的。
例如:
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
。