天天看點

Android程式中使用定時器Timer

一、  重點

1.          如何使用handler和message

2.          如何延時調用

     1) 使用延遲發消息的方式

     2) 也可以使用android.util.Timer與handler相結合的方式

二、  舉例

1.          功能:實作一個應用界面,在使用者長按觸模屏兩秒後,打出Log資訊

2.          步驟:

1)         建立project

a)          在eclipse中點選菜單File->New->Project……

b)         選擇Android Project按Next

c)          填寫project的各項内容如下

Project name: test_xy // 目錄名, 它位于你設定的workspace之下

Package name: com.android.test //打包名稱

Activity name: .TestXy // 類名(生成檔案TestXy.java)

Application name: test_xy // 可執行程式名

然後點Finish按鈕

2)         修改TestXy.java代碼如下package com.android.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.os.Handler;
import android.os.Message;
import android.util.Log;

public class TextXy extends Activity {
         /** Called when the activity is first created. */
         static final int MESSAGE_LONG_PRESS = 1;         // 定義長按事件ID         static final int LONG_PRESS_TIMEOUT = 2000;            // 定義長按為2秒         final Handler mHandler = new LongPressHandler();         // 定義handler
         class LongPressHandler extends Handler {      // handler類的實作                   public void handleMessage(Message msg) {               // 事件處理函數switch (msg.what) {
                            case MESSAGE_LONG_PRESS:     // 選擇事件ID                                     Log.d("TEST_XY", "now long press!");
                                     break;
                            }
                   }
         }

         @Override
         public void onCreate(Bundle savedInstanceState) {
                   super.onCreate(savedInstanceState);
                   setContentView(R.layout.main);
         }

         public boolean onTouchEvent(MotionEvent ev) {                  // 處理觸屏事件                   int action = ev.getAction();        // 得到觸屏動作                   if (action == MotionEvent.ACTION_DOWN) {  // 手指按下                            mHandler.sendMessageDelayed(mHandler
                                               .obtainMessage(MESSAGE_LONG_PRESS), 
                                               ONG_PRESS_TIMEOUT);      // 延時2秒後發送事件                   } else if (action == MotionEvent.ACTION_UP) {        // 手指擡起                            mHandler.removeMessages(MESSAGE_LONG_PRESS); 
                            // 取消延時事件                   }
                   return false;
         }
}      

3)         運作

a)          在eclipse中點選菜單Run->Run Configurations……

b)         輕按兩下左邊的Android Application,産生了一個New Configuration,點開它填寫内容如下:

Name: yan_config // 随便起一個

Project: test_xy // 剛才起的project, 即目錄名

繼續閱讀