2013-11-28 14 views
1

我是Android編程中的新手,我曾經編程微控制器,現在我需要你們的一些幫助。 我想在重複調用每個函數之後延遲調用兩個函數,直到按下停止按鈕。Android如何在循環中的時間量之後調用函數

btnStart.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       //I want perform these series of function repeatedly 
       //until stop button pressed 
       while(true){ 
        bluetoothDisconnect(); 
        delay(3000); 
        bluetoothConnect(); 
        delay(3000); 
        if(status == true){ 
         break; 
        } 
       } 
      } 

     }); 

     btnStop.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       status = true; 

      } 

     }); 

非常感謝,

回答

0

試試這個:

btnStart.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      status = false; 

      Thread t = new Thread(new Runnable() { 
       @Override 
       public void run() { 
        doLoop(); 
       } 
      }); 

      t.start(); 
     } 

    }); 

    btnStop.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      status = true; 
     } 
    }); 

其中

private void doLoop(){ 
    do { 
     bluetoothDisconnect(); 
     try { 
      Thread.sleep(3000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     bluetoothConnect(); 
     try { 
      Thread.sleep(3000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 

    } while (!status); 
} 

status是一個全局變量,FALSE默認(聲明爲boolean status = false) 此代碼的工作作爲一個簡單的解決方案,但是我建議你看看AsyncTask分類: http://developer.android.com/guide/components/processes-and-threads.html

+0

它的工作!謝謝,但停止按鈕不起作用,你能解決它嗎? 和我有另一個線程緩衝來自外部設備的流數據,似乎我沒有得到任何線程,任何想法如何解決這個問題? – user3045529

+0

@ user3045529是,發現了一個錯誤。在'Thread t = ...'之前添加'status = false'我編輯了代碼,它在我的設備上工作,只是經過測試。 –

1

你需要線程btnStart代碼,否則它會鎖定GUI。對不起,沒有更多的幫助,我使用Mono(C#)編寫Android應用程序,但我不確定如何在Java中執行此操作。

0

創建處理程序以延遲任務。

創建運行的線程和運行處理程序,如:

Handler mhandler=new Handler(); 

Runnable mRunnable=new Runnable() { 

       @Override 
       public void run() { 
        bluetoothDisconnect(); 
      btnStart.performClick() ; 
       } 

    }; 



btnStart.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      //I want perform these series of function repeatedly 
      //until stop button pressed 
      while(true){ 

       bluetoothconnect(); 
       mhandler.postDelayed(mRunnable,3*1000); 
       if(status == true){ 
        break; 
       } 
      } 
     } 

    }); 
+0

嘿,它不工作,我想要bluetoothConnect()3秒,然後bluetoothDisconnect()3秒。而btnStop不工作,idk爲什麼? – user3045529

相關問題