2016-02-23 93 views
2

我有一個計時器和計時器的任務和處理程序和可運行 我的代碼每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()應該做的伎倆,你爲什麼要同時使用一個定時器和一個Handler啓動意圖 – 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。檢查thisthis

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.