调度服务中的重复任务

时间:2014-11-09 06:41:26

标签: android android-service android-alarms

我需要在后台每1小时重复一次任务(我正在向我的服务器发送一些信息)。

  1. 我尝试使用一个带有后延迟处理程序的服务,称之为自我。

       handler = new Handler(); 
    runable = new Runnable() { 
    
        @Override 
        public void run() { 
            try{
    
            //sending info to server....
    
            }
            catch (Exception e) {
                // TODO: handle exception
            }
            finally{
                //also call the same runnable 
                handler.postDelayed(this, 1000*60*60); 
            }
        } 
    }; 
    handler.postDelayed(runable, 1000*60*60); 
    
  2. 这不起作用,在1分钟的小时间间隔内工作正常,当我将其改为5分钟时,它工作了大约5次重复然后时间错误,一小时后服务关闭。

    1. 我想尝试使用AlarmManager但documentation 它说“从Android 4.4(API级别19)开始,所有重复警报都是不准确的” 有人知道它有多么不精确吗?是几秒钟? ,分钟? 我可以依靠这个按时上班吗?

    2. 是否有人在服务中重复任务有任何其他建议?

    3. 由于

1 个答案:

答案 0 :(得分:2)

您可以使用此代码用于重复调用oncreate方法或任何其他东西

public void callAsynchronousTask() {
    final Handler handler = new Handler();
    Timer timer = new Timer();
    TimerTask doAsynchronousTask = new TimerTask() {
        @Override
        public void run() {
            handler.post(new Runnable() {
                public void run() {
                    try {
                        onCreate();

                    } catch (Exception e) {

                    }
                }
            });
        }
    };
    timer.schedule(doAsynchronousTask, 0, 1000); //execute in every 1000 ms
}