Android 台灣中文網

標題: [解決]有關timer的使用方法? [打印本頁]

作者: kansas73    時間: 2013-10-15 22:45
標題: [解決]有關timer的使用方法?
本帖最後由 kansas73 於 2013-10-28 14:56 編輯

想要按下Button然後開始接收資料,每三秒接收一次要怎麼寫呢?
我有試著把它寫在Button.OnClickListener
可是好像沒有辦法
找到網路上的範例都看不懂
想說有沒有更完整更詳細的範例謝謝!
這是我寫的程式碼
public class timerTask extends TimerTask
     {
       public void run()
       {
       }
     };
     /*讀取資料*/
     private Button.OnClickListener myButton9_listener=new Button.OnClickListener(){
             public void onClick(View v) {                   
                     Timer timer = new Timer(true);
                     timer.schedule(new timerTask(), 1000, 1000);
                     try{                                   
                                     byte[]read=new byte[2];
                                     read[0]=(byte) 0x10;
                                     btOut.write(read);               
                          
                             } catch (IOException e){
                                     e.printStackTrace();
                             }                        
                   }         
            
     };
作者: whl    時間: 2013-10-15 23:15
  1. public class timerTask extends TimerTask
  2. {
  3.     public void run()
  4.     {
  5.          try{                                    
  6.              byte[]read=new byte[2];
  7.              read[0]=(byte) 0x10;
  8.              btOut.write(read);               
  9.          } catch (IOException e){
  10.               e.printStackTrace();
  11.          }                        
  12.      }         
  13. };

  14. /*讀取資料*/
  15. private Button.OnClickListener myButton9_listener=new Button.OnClickListener(){
  16.     public void onClick(View v) {                    
  17.         Timer timer = new Timer(true);
  18.         timer.schedule(new timerTask(), 1000, 1000);
  19.     }      
  20. };
複製代碼
大概是這樣。
作者: kansas73    時間: 2013-10-15 23:57
whl 發表於 2013-10-15 23:15
大概是這樣。

to whl 先謝謝大大的熱心解答
不過經小弟測試之後 發現按下讀取的按鈕,APP會自動關閉
不知道錯誤是在何處?
還是麻煩大大幫我解答一下謝謝
作者: whl    時間: 2013-10-16 06:59
kansas73 發表於 2013-10-15 23:57
to whl 先謝謝大大的熱心解答
不過經小弟測試之後 發現按下讀取的按鈕,APP會自動關閉
不知道錯誤是在何 ...

我知道可能會出錯,所以才會寫大概是這樣,但是給的資料不足,無法判斷。
作者: kansas73    時間: 2013-10-16 20:23
whl 發表於 2013-10-16 06:59
我知道可能會出錯,所以才會寫大概是這樣,但是給的資料不足,無法判斷。

我在網路上找到的教學都是 一點進APP就開始計時就是直接在main下就使用Timer
可是我想要當我按下按鈕在開始計時然後每三秒重複接收資料
直到我按下停止的按鈕
不知道要往哪個方向找才對
作者: whl    時間: 2013-10-16 21:59
沒找錯阿,就是類似這樣寫,只是使用 Activity 直接處理 timer 會比較簡單。
參考一下
http://ascii-iicsa.blogspot.tw/2010/10/androidtimer.html
作者: kansas73    時間: 2013-10-16 22:39
whl 發表於 2013-10-16 21:59
沒找錯阿,就是類似這樣寫,只是使用 Activity 直接處理 timer 會比較簡單。
參考一下
http://ascii-iicsa. ...

這方法好像不行
因為我的那個button按下去的時候會送出一個訊息
然後要求藍芽模組發送數據給我
可是這樣寫好像就無法發送訊息去要求藍芽模組送出數據

作者: iamjason008    時間: 2013-10-18 11:19
你可以參考一下這裡
http://kevingo75.blogspot.tw/2011/09/java-timer-scheduledexecutorservice.html
作者: kansas73    時間: 2013-10-20 16:24
iamjason008 發表於 2013-10-18 11:19
你可以參考一下這裡
http://kevingo75.blogspot.tw/2011/09/java-timer-scheduledexecutorservice.html ...

非常感謝您
似乎不能用
private Button.OnClickListener myButton9_listener=new Button.OnClickListener(){
需要再
public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
之下寫一個
myButton9.setOnClickListener (new Button.OnClickListener(){
                  public void onClick(View v) {  
我這樣試才行得通!
另外我要怎麼讓他停止呢???
作者: iamjason008    時間: 2013-10-20 16:35
請看
http://developer.android.com/reference/java/util/TimerTask.html
裡面有提供一個"cancel"的method
作者: kansas73    時間: 2013-10-20 17:16
iamjason008 發表於 2013-10-20 16:35
請看
http://developer.android.com/reference/java/util/TimerTask.html
裡面有提供一個"cancel"的method ...

是不是 使用了cancel之後雖然可以停止timer
但當我還需要再使用的時候他就沒有辦法用了?
作者: iamjason008    時間: 2013-10-20 22:34
要用的時候就重新來一遍嘍~~
作者: kansas73    時間: 2013-10-25 23:16
iamjason008 發表於 2013-10-20 22:34
要用的時候就重新來一遍嘍~~

所以好像不能只寫
private Button.OnClickListener myButton10_listener=new Button.OnClickListener(){
             public void onClick(View v) {                   
                     timer.cancel();;
               }                
     };
當我按下停止按鈕
然後要在案 讀取資料的按鈕 就當掉了!

作者: kansas73    時間: 2013-10-28 14:59
iamjason008 發表於 2013-10-20 22:34
要用的時候就重新來一遍嘍~~

http://android.yaohuiji.com/archives/2498
參考了上面的這個版主寫的code 就解決我的問題了謝謝!!

include::
寫timer建議使用Handler,一開始沒有用Handler  Bug 會多到想讓你砍掉重練
版主也有說 ""在Android里进行UI控制还是要用Handler的""
謝謝 大家的回答 在此分享給其他人




歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1