2016-03-26 20 views
0

Android'de her zaman Async Task'i çalıştırmak istiyorum.Android'de sürekli olarak iki kez karşılaştırın

benim aralığı = olduğunu {15 dk, kullanıcıların seçimine bağlı olarak 30 dakika, 1 saat .... vs

. O zaman benim uygulamayı başlattığınızda

benim şimdiki alma zamanı istiyorum ve

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(); 
    } 

Async Görevi

yürütmek istiyorum Ama nasıl almıyorum her n aradan sonra.

cevap

0

AsyncTask'ı bir süre sonra çalıştırmak isterseniz, AsyncTask'ta Thread.sleep'ı kullanabilirsiniz. Bu durumda SendingTask sınıfıdır. İşte bir örnek:

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(); 
    } 
} 
+0

** _ Teşekkür ederiz _ ** –

+0

Rica ederim, bu sizin sorunuza cevap veriyor mu? –

+0

** Evet Aslında çalışıyor ... çünkü kullanıcı olarak aralıklarla girdi almalıyım ve her bir aralıktan sonra veriyi sunucuya veriyorum ** ama neden 1000 kez ilk kez ve 3000 tane daha kullanacağımı anlamadım, aralığım 15 dakika 15 * 60 * 1000 demektir, bu yüzden aynı aralığı kullanmalıyım –

İlgili konular