- 浏览: 382974 次
最新评论
-
qq_19471875:
为了感谢楼主 我特意注册了一个账号!,谢谢!很实用!真棒
ViewPager刷新单个页面的方法 -
asdf658:
...
Eclipse安装server插件 -
JasonMichael:
多谢。搞定~
Eclipse安装server插件 -
passerby_whu:
应该是官网写错了。应该是144x144.
Android不太能够分辨率launcher icon的适配 -
zhengyong7232:
Create or replace function test ...
postgresql产生随机数和随机日期的存储过程
之前一篇文章里有用到过一个封装好的定时器工具类,现在又做了一些升级,支持自定义响应多少次以后自动关闭,这里单独共享出来:
用法很简单,定义自己的handler以响应定时任务,在合适的地方打开和关闭定时器即可:
package com.example.util; import java.util.Timer; import java.util.TimerTask; import com.example.CnLog; import android.os.Handler; import android.os.Message; /** * Generate a timer object with specified 'delay' and 'period', * you can handle events with 'TimerManager.LOAD_PROGRESS' * and 'TimerManager.CLOSE_PROGRESS', then do your progress. * If you want to get 'timerId', just get it from 'arg1' * * @author jackie * */ public class Manager { private static final String TAG = TimerManager.class.getSimpleName(); private Handler mHandler; /** Timer **/ private Timer timer = null; /** TimerTask **/ private TimerTask timerTask = null; /** Delay Time in milliseconds **/ private int mDelay; /** Period in milliseconds **/ private int mPeriod; /** trigger times **/ private int mTimes = -1; /** Timer in progressing flag **/ public static final int LOAD_PROGRESS = 0; /** Timer close flag **/ public static final int CLOSE_PROGRESS = 1; /** TimerId **/ private int mTimerId = 0; /** * Construct a unlimited timer * * @param delay amount of time in milliseconds before first execution * @param period amount of time in milliseconds between subsequent executions */ public TimerManager(int delay, int period) { this.mDelay = delay; this.mPeriod = period; } /** * Construct a unlimited timer, with specified handler * * @param handler your own handler to handle the events from this timer * @param delay amount of time in milliseconds before first execution * @param period amount of time in milliseconds between subsequent executions */ public TimerManager(Handler handler, int delay, int period) { this(delay, period); this.mHandler = handler; } /** * Construct a times-limited timer * * @param delay amount of time in milliseconds before first execution * @param period amount of time in milliseconds between subsequent executions * @param times auto close timer after how many times, minimum is 1 */ public TimerManager(int delay, int period, int times){ this(delay, period); if (times < 1) { throw new IllegalArgumentException("times can not smaller than 1"); } this.mTimes = times; } /** * Construct a times-limited timer, with specified handler * * @param handler your own handler to handle the events from this timer * @param delay amount of time in milliseconds before first execution * @param period amount of time in milliseconds between subsequent executions * @param times auto close timer after how many times, minimum is 1 */ public TimerManager(Handler handler, int delay, int period, int times) { this(handler, delay, period); if (times < 1) { throw new IllegalArgumentException("times can not smaller than 1"); } this.mTimes = times; } public void startTimer() { CnLog.w(TAG, "==========> Start timer!"); if (timerTask == null) { timerTask = new TimerTask() { @Override public void run() { Message msg = new Message(); msg.what = LOAD_PROGRESS; msg.arg1 = (int) (++mTimerId); if (mHandler != null) { mHandler.sendMessage(msg); } // Have times-limit, and already reached if (mTimes != -1 && mTimerId == mTimes) { closeTimer(); } } }; timer = new Timer(); timer.schedule(timerTask, mDelay, mPeriod); } } public void closeTimer() { CnLog.w(TAG, "==========> Close timer!"); if (timer != null) { timer.cancel(); timer = null; } if (timerTask != null) { timerTask = null; } mTimerId = 0; if (mHandler != null) { mHandler.sendEmptyMessage(CLOSE_PROGRESS); } } public void setHandler(Handler handler) { this.mHandler = handler; } }
用法很简单,定义自己的handler以响应定时任务,在合适的地方打开和关闭定时器即可:
private void insTimer() { Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what) { case TimerManager.LOAD_PROGRESS: int timerId = msg.arg1; CnLog.d(TAG, "Timer in processing. timerId: " + timerId); if (getCodeTv != null) { getCodeTv.setVisibility(View.GONE); } if (resendLl != null) { resendLl.setVisibility(View.VISIBLE); int remain = MAX_TIMES - timerId; String resendDisp = "(" + remain + ")"; remainTv.setText(resendDisp); } break; case TimerManager.CLOSE_PROGRESS: CnLog.d(TAG, "Timer closed."); if (getCodeTv != null) { getCodeTv.setVisibility(View.VISIBLE); } if (resendLl != null) { resendLl.setVisibility(View.GONE); } break; } super.handleMessage(msg); } }; timer = new TimerManager(handler, 0, 1000, MAX_TIMES); } // Start timer timer.startTimer(); // Stop timer timer.closeTimer();
发表评论
-
Cocos2dx开发解决undefined reference to 'atof'和x86平台下报internal compiler error的错误
2016-11-21 17:10 2785最近在为游戏做java sdk的cocos2dx引擎层代码时遇 ... -
Android项目集成Jenkins(JUnit test & Coverage)
2016-08-26 14:12 4369为了实现持续集成,提 ... -
Android短信监听功能(解决onChange触发两次的问题)
2016-06-16 18:51 6854前言 项目要做短信验证码自动填充的功能,基本上两种方法:Con ... -
Android不太能够分辨率launcher icon的适配
2015-04-24 11:01 1912网上讲android适配不同分辨率的文章很多,但是很少有说明不 ... -
Android 根据屏幕尺寸适配控件尺寸(按比例缩放)
2015-04-03 18:28 4638在做facebook登录时,正好看到其SDK中一段代码,可以根 ... -
Android获取状态栏高度
2015-01-28 12:04 1194获取状态栏高度有两种方法: 1.如果是在Activity中: ... -
Apktool打包和解包
2014-12-02 17:49 0本文的学习内容参考自[Android实例] 【eoeAndro ... -
Android 控件自动“移入、暂停、移出”效果的实现
2014-09-05 09:54 2388一个常见的效果:控件自动移入屏幕,停留几秒,再移出屏幕。项目中 ... -
Google Map 如何捕获onTouchEvent
2014-09-02 17:42 1714当我的项目中需要捕获google map的touch事件时,才 ... -
Android日期时间选择器实现以及自定义大小
2014-08-27 20:01 62559本文主要讲两个内容:1.如何将DatePicker和TimeP ... -
ViewPager刷新单个页面的方法
2014-08-22 11:09 39091使用ViewPager做滑动切换图片的效果时,如果图片是从 ... -
Android使用MediaPlayer开发时抛IllegalStateException
2014-08-18 16:45 59802在我开发的语音播放程序中,首次播放语音没问题,第二次播放时 ... -
Android 含有图片和文字的Button的实现
2014-07-17 20:15 8856要实现一个同时包含图片和文字的按钮,粗糙一点的做法当然是直 ... -
LinearLayout半透明效果
2014-07-16 18:12 17431透明效果有很多中实现方式,可以代码实现,也可以直接在布局文件中 ... -
Android图片压缩(质量压缩和尺寸压缩)
2014-07-04 18:16 4219在网上调查了图片压缩的方法并实装后,大致上可以认为有两类压缩: ... -
Google Map无法显示:Error contacting Google servers. XXX authentication issue
2014-06-30 20:32 2081在开发google map时遇到的问题: 06-26 14 ... -
【转载】Android异步处理
2013-06-20 12:12 887关于Android异步处理的一整个系列的博文,共有4篇,博主写 ... -
android 写log到文件
2013-06-14 17:31 14215网上找的一个很强大的实现方法,原网页的链接找不到了,没法转载, ... -
android service被系统回收的解决方法
2013-06-14 11:20 7218自己的app的service总是容 ... -
Android 中的 Service 全面总结
2013-06-13 16:42 898关于Android Service的知识,可以参考以下博文,内 ...
相关推荐
这个示例演示对话框的用法,包括普通的AlertDialog,列表对话框,进度对话框,自定义对话框 这里实现一个在3秒后自动关闭对话框的功能,通过一个定时器来完成
2分钟倒计时,可实现页面切换、APP处于后台 或者 APP 关闭 倒计时继续(代码中private static final int TIME_DIFF = 120*1000;//时间间隔 2分钟 被我标成10分钟了 自己改下注释 我就不改了 )
启动页几乎成为了每个app的标配,有些商家在启动页中增加了开屏广告以此带来更多的收入。目前启动页的广告都有倒计时的功能,那么我们在倒计时的过程中能做些什么呢?下面通过本文给大家详细介绍供大家参考
Android中的AlarmManager实质上是一个全局的定时器,是Android中常用的一种系统级别的提示服务,在指定时间或周期性启动其它组件(包括Activity,Service,BroadcastReceiver)。 一、概述: 该类提供一种访问系统闹钟...
- 触摸全景图标可创建全景照片(Android 4.0及以上) - 快速拍摄模式可以预览分辨率快速捕获照片 - 在视频录制期间捕获快照 - 使用音量键来缩放和拍摄照片 - 在光线不足的环境下录制视频时自动打开闪光灯 - 可将界面...
- 触摸全景图标可创建全景照片(Android 4.0及以上) - 快速拍摄模式可以预览分辨率快速捕获照片 - 在视频录制期间捕获快照 - 使用音量键来缩放和拍摄照片 - 在光线不足的环境下录制视频时自动打开闪光灯 - 可将界面...
- 触摸全景图标可创建全景照片(Android 4.0及以上) - 快速拍摄模式可以预览分辨率快速捕获照片 - 在视频录制期间捕获快照 - 使用音量键来缩放和拍摄照片 - 在光线不足的环境下录制视频时自动打开闪光灯 - 可将界面...
- 触摸全景图标可创建全景照片(Android 4.0及以上) - 快速拍摄模式可以预览分辨率快速捕获照片 - 在视频录制期间捕获快照 - 使用音量键来缩放和拍摄照片 - 在光线不足的环境下录制视频时自动打开闪光灯 - 可将界面...
闹钟ONE会自动记录分析每次闹钟响起时,您延迟了多少次才关闭闹钟。当记录的数据足够分析时,闹钟ONE会在您开启闹钟或设定新闹钟时对您的设定提供建议。比如,帮您增大闹钟音量,或是调整闹钟响铃方式。 -通过...
调光器 关于 调光器可让您将屏幕亮度降低到 Android 允许的水平以下。 在夜间使用手机时,避免眼睛疲劳非常有帮助。 该应用程序有一个简约的界面,让事情变得甜蜜和简单。...定时器自动关闭服务 关闭通知中的选项
设备管理:受限于 Android 系统的机制设计,此权限是唯一可在非 ROOT 设备上实现休眠完成后立即锁屏的必要权限。当需要此权限时,绿色守护将显式的请求您的授权。 在其它应用之上绘制内容:当需要关闭屏幕时,确保...
自动关闭定时器 全屏弹出 在 Open 和 Close 事件中添加您自己的 CSS3 效果 多个回调方法以获得最佳控制 为关闭事件绑定 ESC 键 和更多... 在 IE7+、Chrome、Firefox、Safari、IOS、Android 上测试 Popin 或 Layer.....
像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...
像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...
一个简单的项目,实现灯,过滤和换气的时钟控制,以及通过MQTT的远程覆盖。 硬件组件: ESP8266 ESP-12E × 1 电容1000μF× 1 OpenBuilds线缆 - 脚× 1 LM317 DC-DC线性转换器模块× 1 电阻10k欧姆× 7 电阻221欧姆...
使用本地网络连接,TI的CC1310 Launchpads,Beagle Bone Black和亚马逊网络服务,我们将传达湿度和天气数据,打开和关闭洒水喷头。该系统将在地下运行,并且能够在几乎没有物理维护的情况下保持运行。在外面运行的...