博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android TimerTask 的简单应用
阅读量:5060 次
发布时间:2019-06-12

本文共 2135 字,大约阅读时间需要 7 分钟。

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
      所以同一个定时器任务只能被放置一次

转载于:https://www.cnblogs.com/qq78292959/archive/2011/12/06/2277741.html

你可能感兴趣的文章
Jmeter学习系列----3 配置元件之计数器
查看>>
jQuery 自定义函数
查看>>
jq 杂
查看>>
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
PHP/MYSQL中文乱码解决方法
查看>>
作业一
查看>>
AJAX
查看>>
ActiveMQ与spring整合
查看>>
一分钟搞定AlloyTouch图片轮播
查看>>
框架基础:ajax设计方案(一)---集成核心请求
查看>>
DataGridView隔行显示不同的颜色
查看>>
shell - shift
查看>>
java命令行调用本地文件协议hikvideoclient://
查看>>
magento批量上传产品
查看>>
iOS介绍
查看>>
技术疏于交流
查看>>
图的遍历
查看>>
web服务器
查看>>
Linux记录-JMX监控JAVA进程
查看>>
Solr记录-solr检索和查询数据
查看>>