在Android中每10分钟调用一次方法

时间:2012-11-29 12:43:51

标签: java android multithreading android-intent

我有一个带按钮的活动。当我按下该按钮时,应该每10分钟调用一次方法。

我正在尝试使用HandlerTimer。但是无法得到结果。

5 个答案:

答案 0 :(得分:15)

创建一个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对象来保持定时器,你也可以启动和停止定时器。作为类变量或其他东西。

答案 1 :(得分:2)

如果您不需要在后台运行您的应用,请使用AlamManager。否则,您可以拥有一个持续运行的服务和CountDownTimer

答案 2 :(得分:2)

使用以下代码,并在没有给出第二个参数的毫秒数后重复调用notifyme()

    Timer timer = new Timer();
    timer.schedule(new TimerTask()
    {
       public void run()
       {
           View v = new View(getApplicationContext());
           notifyMe(v);
       }},4000,100000);

    }

答案 3 :(得分:1)

Alarm Manager适用于您希望在特定时间运行应用程序代码的情况,即使您的应用程序当前未运行。

对于正常的计时操作(刻度,超时等),使用Handler会更容易,也更有效。

答案 4 :(得分:1)

- 最好使用ServiceActivity View

- Service可以有界或无界Activity

请参阅此链接了解服务示例:

http://www.vogella.com/articles/AndroidServices/article.html

- 但如果您仍想使用主题,请尝试此操作...

1。如果您的Thread (非用户界面) 未在专用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

)执行此操作