在android中不断比较两次

时间:2016-03-26 14:16:48

标签: android date calendar compare datetime-comparison

我希望每隔一段时间在Android中运行Async Task。

我的间隔= {15分钟,30分钟,1小时......等等

取决于用户'选择。

当我启动我的应用程序时,我想获取当前时间,并且每隔n个间隔后我想执行异步任务

   int intv = 15;
   SimpleDateFormat sd = new SimpleDateFormat(
            "HH:mm:ss");
    Date date = new Date();
    sd.setTimeZone(TimeZone.getTimeZone("GMT+05:30"));
    System.out.println(sd.format(date));
    String currenttime = sd.format(date);
    Date myDateTime = null;
    try
      {
        myDateTime = sd.parse(currenttime);
      }
    catch (ParseException e)
      {
         e.printStackTrace();
      }
    System.out.println("This is the Actual        Date:"+sd.format(myDateTime));
    Calendar cal = new GregorianCalendar();
    cal.setTime(myDateTime);

            cal.add(Calendar.MINUTE , intv ); //here I am adding Interval
    System.out.println("This is Hours Added Date:"+sd.format(cal.getTime()));
    try {
        Date afterintv = sd.parse(sd.format(cal.getTime()));
        if(afterintv.after(myDateTime)){  //here i am comparing 
            System.out.println("true..........");
            new SendingTask().execute;  //this is the function i have to execute
        }
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

但我不知道怎么做。

1 个答案:

答案 0 :(得分:0)

如果您想在某段时间后运行AsyncTask,可以在AsyncTask中使用Thread.sleep。在这种情况下是SendingTask类。这是一个示例:

class SendingTask extends AsyncTask{

    // Interval is in milliseconds
    int interval = 1000;

    public SendingTask(int interval) {
        // Setting delay before anything is executed
        this.interval = interval;
    }

    @Override
    protected Object doInBackground(Object[] params) {
        // Wait according to interval
        try {
            Thread.sleep(interval);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Object o) {
        super.onPostExecute(o);
        // update UI and restart asynctask
        textView3.setText("true..........");
        new SendingTask(3000).execute();
    }
}