2016-02-23 1 views
2

У меня есть задача таймера и таймера, а обработчик и runnable мой код должен выполняться каждые 10 секунд, пока переменная ServerResponse не будет пустой, а затем перенаправлена ​​на другую активность.Как остановить задачу таймера

, но когда мой код перенаправляется на другую задачу таймера активности работает !!!!!

как можно остановить задачу таймера, когда мы находимся в другом действии?

 Timer timer = new Timer(); 
     timer.schedule(new TimerTask() { 

     @Override 
     public void run() { 
      runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        new sendDataToServer().execute(); 
        final Handler handler = new Handler(); 

        handler.postDelayed(new Runnable() { 

         @Override 
         public void run() { 
          if(serverResponse.length() > 0) 
          { 
           Intent intent = new Intent(PayementActivity.this,UserFormActivity.class); 
           startActivity(intent); 
           finish(); 
          } 
         } 
        }, 10000); 
       } 
      }); 
     } 
    }, 0, 10000); 
+1

timer.cancel() следует сделать трюк, перед запуском Intent – chaitanya

+0

Почему вы используете как таймер и обработчик? –

ответ

0
 Timer timer = new Timer(); 
     timer.schedule(new TimerTask() { 

     @Override 
     public void run() { 
      runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        new sendDataToServer().execute(); 
        final Handler handler = new Handler(); 

        handler.postDelayed(new Runnable() { 

         @Override 
         public void run() { 
          if(serverResponse.length() > 0) 
          { 
           Intent intent = new Intent(PayementActivity.this,UserFormActivity.class); 
           if(timer!= null) { 
           timer.cancel(); 
           timer.purge(); 
           timer= null; 
    } 
           startActivity(intent); 
           finish(); 
          } 
         } 
        }, 10000); 
       } 
      }); 
     } 
    }, 0, 10000); 
+0

Я протестировал его, когда моя активность перенаправила задачу таймера запустится один раз !!!!! – soheila

0

Это не может ответить на ваш вопрос прямо, но только реактивные расширения являются хорошей альтернативой использованию TimerTasks. Проверьте this и this вне.

subscription = Observable.interval(10, TimeUnit.SECONDS) 
       .subscribeOn(Schedulers.io())// Runs on a io thread pool 
       .observeOn(AndroidSchedulers.mainThread()) // Observes on UI thread 
       .subscribe(timeCount ->{ 
        // Your code here 
       }); 
subscription.unsubscribe();// Stops the stream. 
Смежные вопросы