2014-03-01 78 views
2

我试图让我的应用程序每天都在同一时间执行一项任务。这是一个必须在后台完成的任务(上传文件)。我使用一个AsyncTask。 任何想法如何做任务? 我试图用AlarmManager来做,但我没有成功。定期执行任务

+4

你试过看[这里](http://developer.android.com/training/scheduling/alarms.html)? – user2340612

+0

你可以发布你的代码吗? –

回答

1

我建议你使用Service,在一天的特定时间在后台上传文件。

  1. 要正确调度服务,请使用AlarmManager类,如图所示。

    Calendar cal = Calendar.getInstance(); 
    
    // Set upload time to be 11 am 
    cal.set(Calendar.HOUR_OF_DAY, 11); 
    cal.set(Calendar.MINUTE, 0); 
    cal.set(Calendar.SECOND, 0); 
    
    // 24 hours interval 
    long interval = 24*60*60*1000; // Or use AlarmManager.INTERVAL_DAY 
    
    Intent intent = new Intent(this, YourService.class); 
    PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0); 
    
    AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);  
    //Start every 24 hours (once in a day) 
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), interval, pintent); 
    
  2. 调度完成后,您的文件上传代码将在该服务中完成这项工作。

+0

这是一个很好的解决方案......但这种事情完全是* SyncManager的设计目的。你可以考虑使用它。 –