我应该如何在android中运行定期任务

时间:2017-01-16 23:54:50

标签: android android-service alarmmanager periodic-task

我正在编写应用程序,需要定期(约15分钟)从后台服务器下载JSON数据并通知用户通知。

我没有很多Android编码的经验,而且我在问我应该如何正确地使用最佳编码方法呢?

我不需要太多的精确度,不精确重复的AlarmManager应该可以正常工作。我知道如何使用BroadcastReceiver接收BOOT_COMPLETE并启动服务。但是,我不知道如何设置AlarmManager在服务中运行特定的操作,如果我应该这样做?我不希望以未提供的方式使用android机制。

2 个答案:

答案 0 :(得分:0)

使用AsyncTask从服务器获取信息。在Receiver类的onReceive方法中创建新的AsyncTask对象并按如下所示执行:

private class GetContent extends AsyncTask<String,Void,String> // Assume class name
extras = extras.getString("json");
GetContent().execute(extras); 

在AsyncTask doInBackground的默认函数中,检索数据并返回JSON。在另一个默认函数onPostExecute中,创建一个NotificationCompat.Builder对象并通知。

答案 1 :(得分:0)

使用TimerTask类:

private TimerTask timerTask; 
private final long PERIOD_TIME=1000 * 60 * 15; //15min

@Override
public void onCreate() {

Timer timer = new Timer();

timerTask = new TimerTask() {
  @Override
  public void run() {
    //Your request JSON
   }
  };

  timer.scheduleAtFixedRate(timerTask, 0, PERIOD_TIME);
 }