Her dakika için cihaz konumunu sunucuya gönderdiğim bir uygulama geliştiriyorum. Görevimi planlamak için Handler'ı kullanıyorum. Kullanıcı STOP düğmesini tıkladıktan sonra, işleyici yürütmeyi durdurmalıdır. Bunu başaramıyorum. Lütfen aşağıda benim kodumu bulun.Aralıklı çalışan işleyici nasıl durdurulur (1 dak)?
public void callSpecficTime() {
timer = new Timer();
doAsynchronousTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
Log.e("TImeOnSchedule", String.valueOf(inTime));
if(inTime==5)
{
new PostDataAsyncTask().execute();
}
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
});
}
};
timer.schedule(doAsynchronousTask, 0, 60000);
}
StopTask kodu:
public void stopTask(){
if(doAsynchronousTask!=null){
Log.d("TIMER", "timer canceled");
handler.removeCallbacks(doAsynchronousTask);
// timer.cancel();
doAsynchronousTask.cancel();
}
}
Ben stopService
, removeCallbacks
denedik ama işe yaramadı. Herkes bana bunun için çözüm sağlayabilir mi?
public void onClickButton(View v)
{
if(v.getId()==R.id.IBstart)
{
callAsynchronousTask();
callSpecficTime();
}
else if(v.getId()==R.idIBstop)
{
stopTask();
}
}
GÜNCELLEME Bu iki kere ** callAsynchronousTask() **
public void callAsynchronousTask() {
new PostDataAsyncTask().execute();
}
I am posta veridir. İlk kez Kullanıcı START düğmesini tıklattığında ve sonra her bir dakika için yürütmek için zamanlayıcıyı başlatıyorum. cancel()
sonra
time.purge() değil mi? Ben bunu yaptım. Hala sorun aynı. Ben ... null' –