Senthamil Thendral S
Senthamil Thendral S

Reputation: 508

AsyncTask not called from TimerTask android

I am developing the project which continuously get datas from server at 30secs interval.So I used Handler with Timer and called Asynctask.

But my asynctask not called.This is my code,

      final Handler handler;
         handler = new Handler();
           timer = new Timer();
          TimerTask doAsynchronousTask = new TimerTask()
          {       
              @Override
              public void run() {
                  handler.post(new Runnable() {
                      public void run() {       
                          try
                          {

                              System.out.println("I am xxx");
                              LiveTrack myActivity = new LiveTrack();
                              AsyncTask<String, String, String> task = myActivity.new VehiclePath();
                                task.execute();




                          } 
                          catch (Exception e) 
                          {

                          }
                      }
                  });
              }
          };
          timer.schedule(doAsynchronousTask, 0, 30000);

Can anyone guide me why I am facing this?

Upvotes: 0

Views: 92

Answers (1)

Gilad Haimov
Gilad Haimov

Reputation: 5857

You cannot create an AsyncTask from within a TimerTask because it runs on a spawned thread, i.e. not the UI thread).

AsynTasks must be created and execute()-ed only on the UI thread.

Instead, use an Executor for the background processing and call runOnUiThread when it is time to update the UI.

 ExecutorService executorPool =  Executors.newSingleThreadExecutor();

 executorPool.execute(new Runnable() {
    public void run() {
        // do background processing here <------------------

        myActivity.runOnUiThread(new Runnable() {
              @Override
              public void run() {
                   // update ui here <--------------------
              }
        })
    }
});

Upvotes: 3

Related Questions