Light-weight Timer for Android (background worker)
来源:互联网 发布:java工作日报管理系统 编辑:程序博客网 时间:2024/06/03 13:19
原文:http://www.codeproject.com/Tips/157511/Light-weight-Timer-for-Android-background-worker
If you are new to Android development, I am pretty sure some of you may have been through the same problem where you needed a simple periodic timer for yourAndroid app. You may use
I used this timer to make a
I've used this timer in my simple app TaxiMate.
java.util.Timer
but this is not a good choice as this timer creates a new thread for some reason and you don’t want to invoke multiple threads in your mobile app. So I created this simple timer that makes use of theandroid.os.Handler
class. Below is the source code of the Timer forAndroid. Sorry for the formatting and naming convention. I’m used to the C# conventions.import android.os.Handler; public class Timer { private int _interval; public int getInterval() { return _interval; } public void setInterval(int delay) { _interval = delay; } private Handler handler; private Runnable _tickHandler; private Runnable delegate; private boolean ticking; public boolean getIsTicking(){ return ticking; } public Timer(int interval) { _interval = interval; handler = new Handler(); } public Timer(int interval, Runnable onTickHandler) { _interval = interval; setOnTickHandler(onTickHandler); handler = new Handler(); } public void start(int interval, Runnable onTickHandler) { if (ticking) return; _interval = interval; setOnTickHandler(onTickHandler); handler.postDelayed(delegate, _interval); ticking = true; } public void start() { if (ticking) return; handler.postDelayed(delegate, _interval); ticking = true; } public void stop() { handler.removeCallbacks(delegate); ticking = false; } public void setOnTickHandler(Runnable onTickHandler) { if (onTickHandler == null) return; _tickHandler = onTickHandler; delegate = new Runnable() { public void run() { if (_tickHandler == null) return; _tickHandler.run(); handler.postDelayed(delegate, _interval); } }; } }
I used this timer to make a
TextViewbblink
or to update values in the UI from a service, to monitor status, etc. with the following code:boolean blinkOn = false; Timer tmrBlink = new Timer(500, new Runnable() { public void run() { if (blinkOn) { ((TextView) findViewById(R.id.widget46)).setVisibility(View.VISIBLE); } else { ((TextView) findViewById(R.id.widget46)).setVisibility(View.INVISIBLE); } blinkOn = !blinkOn; } }); tmrBlink.start();
I've used this timer in my simple app TaxiMate.
License
This article, along with any associated source code and files, is licensed underThe Code Project Open License (CPOL)
- Light-weight Timer for Android (background worker)
- MATLAB Implementation: light-weight vs. heavy-weight
- light-weight sync 和 heavy-weight sync
- MATLAB Implementation: light-weight vs. heavy-weight
- pugixml Light-weight, simple and fast XML parser for C++ with XPath support
- 轻量级容器分析(light weight container)
- 10 Simple and Light Weight CMS Solutions
- lwip Light Weight (轻型)IP协议
- A light weight mysql GUI tool
- hour/minute picker for android countdown timer
- Android后台处理最佳实践(Best Practices for Background Jobs)
- Android后台处理最佳实践(Best Practices for Background Jobs)
- android background
- android:background
- Waiting for Light
- Fragments for background processing
- android 中 weight
- android中的weight
- Oracle 字符集的查看和修改
- 无刷新效果统计在线人数
- PHPCMS|meta标签|keyword|description
- RPC机制流程(2)
- ubuntu php 加速器 APC安装 整理
- Light-weight Timer for Android (background worker)
- MYSQL+PHP-FPM+NGINX+phpmy安装与排错
- Hibernate Session Flush
- JDBC Transaction
- 删除其他linux版本
- MongoDB VS. MySQL
- MS Visio软件的XML文档结构
- HibernateUtil
- linux无线网卡驱动编译