国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android TimerTask 的簡單應用及注意事項

2019-12-12 02:41:04
字體:
來源:轉載
供稿:網友

Android  TimerTask 的簡單應用及注意事項

Android應用開發中常常會用到定時器,不可避免的需要用到 TimerTask 定時器任務這個類

下面簡單的一個示例演示了如何使用TimerTask

這個示例演示了3秒未有觸屏事件發生則鎖屏(只是設置下文本,意思一下)有觸屏事件則解除鎖定

public class ColTimerTaskActivity extends Activity {  /** Called when the activity is first created. */  private final String TAG = "ColTimerTaskActivity"; private final int EVENT_LOCK_WINDOW = 0x100;  private TextView textView; private Handler mHandler; private Timer mTimer; private MyTimerTask mTimerTask;   @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main);        textView = (TextView)findViewById(R.id.textview);        mHandler = new Handler(){     public void handleMessage(Message message){     Log.i(TAG, "message what = " + message.what);     if (message.what == 0x100){      lockWindow();     }          }    };        mTimer = new Timer(true);        resumeWindow();        StartLockWindowTimer();  }    public boolean onTouchEvent(MotionEvent event)  {   // TODO Auto-generated method stub   resumeWindow();   StartLockWindowTimer();      return super.onTouchEvent(event);  }    public void resumeWindow(){   textView.setText("main window");   }    public void lockWindow(){   textView.setText("lock window");  }    public void StartLockWindowTimer(){   if (mTimer != null){   if (mTimerTask != null){    mTimerTask.cancel(); //將原任務從隊列中移除   }         mTimerTask = new MyTimerTask(); // 新建一個任務      mTimer.schedule(mTimerTask, 3000);   }  }    class MyTimerTask extends TimerTask{ @Override public void run() {  // TODO Auto-generated method stub  Log.i(TAG, "run...");  Message msg = mHandler.obtainMessage(EVENT_LOCK_WINDOW);  msg.sendToTarget(); }     }}

這里需要注意兩個問題:

 if (mTimerTask != null){      mTimerTask.cancel(); //將原任務從隊列中移除   }

每次放定時任務前,確保之前任務已從定時器隊列中移除

 mTimerTask = new MyTimerTask(); // 新建一個任務  

  每次放任務都要新建一個對象,否則出現一下錯誤:

      ERROR/AndroidRuntime(11761): Java.lang.IllegalStateException: TimerTask is scheduled already

      所以同一個定時器任務只能被放置一次

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永靖县| 湘乡市| 绥宁县| 博野县| 乌兰浩特市| 岳阳县| 越西县| 阳信县| 洞口县| 西华县| 英吉沙县| 宁津县| 东乡族自治县| 民县| 阿鲁科尔沁旗| 若羌县| 金川县| 辽阳市| 项城市| 增城市| 城市| 巨野县| 孝感市| 宜阳县| 牡丹江市| 顺义区| 恭城| 九台市| 东乡族自治县| 商南县| 旺苍县| 平潭县| 万荣县| 顺平县| 无棣县| 驻马店市| 渭源县| 鄂尔多斯市| 云阳县| 工布江达县| 高尔夫|