Ⅰ android用timer做定时任务,崩溃的原因
在做定时任务的时候,有的同学可能能会用到Timer这个定时任务的辅助类,
但是使用它会有潜在的风险,风险如下,
(1)时间计算不准确问题
因为Timer是以绝对时间计算定时任务的,会受到系统时间的影响,如果在任务执行期间,更改了系统时间,那么会
导致时间计算不准确问题,导致任务没用按找预定的时间执行。
(2)只能单任务执行
简单讲就是,只能一次执行一个任务,如果前一个任务没有执行完成,后一个任务是无法并行执行的,只能等待前一个任务执行完成
才能执行。也有可能会出现这样的结果,前一个任务执行的时间太长,后几个任务时间短,可能在一个时间段内执行了多个任务,任务又
没有按照我们要执行的时间执行。
(3)非检查异常导致异步任务终止
Timer当在执行的过程中遇到非检查异常的时候,会导致本次任务失败,并且接下来的任务也无法被执行,Timer将会终止执行,这不是
我们要的结果,我们需要一套恢复机制。
java5以后可以用下面的这个类来替代Time,并且解决了以上三个问题
java.util.concurrent.ScheledThreadPoolExecutor
那么在Android上呢,可以用 java.util.concurrent.ScheledThreadPoolExecutor,也可以用Handler机制做,
但是不建议使用Timer
Ⅱ android 关于定时执行问题
Handler.postDelayed的Integer参数代表是毫秒,你给的1000意思是一秒钟,如果你是重复执行某一任务,延迟时间是上一次任务执行完毕,再等待十秒,你虽然延迟的是一秒,但可能gps(),代码执行需要9秒。
Ⅲ 安卓定时器Handler如何关闭
{
publicTimeCounts(longmillisInFuture,longcountDownInterval){
super(millisInFuture,countDownInterval);//参数依次为总时长,和计时的时间间隔
}
@Override
publicvoidonFinish(){//计时完毕时触发
}
@Override
publicvoidonTick(longmillisUntilFinished){//计时过程显示
//倒计时数可以写在这儿
}
}
TimeCounts timeCounts = new TimeCounts(30000, 1000);//总时长30s,间隔1s
timeCounts.start();//倒计时开始
timeCounts.cancel();//取消倒计时
Ⅳ java/安卓关于Timer,task,schele重新设置定时任务时间的问题
先cancel,然后再重新实例化、设定时间
Ⅳ 安卓手机定时任务软件
可以先在手机日历中选择新建事件,然后在对应日期设置提醒,接着再选择重复以及提醒的频率和时间即可。你也可以在手机自带的便签或备忘录中添加日程提醒,这样它也可以准时提醒你。或者你也可以在手机上使用敬业签,因为它支持自定义周期重复提醒的功能,而且除了支持公历日期提醒外,还能按照农历日期设置提醒。
Ⅵ 安卓定时任务软件
没用过定时打电话,发短信的那种的,好像是有的。我一直用这个,是切换飞行模式,情景模式,WIFI的。
http://shouji..com/soft/item?docid=4385360&f=search_app_%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%40list_1_title%402
Ⅶ android怎么设置一个定时的任务
我知道的有三种方法;
方法一:可以通过android自带的Handler机制,里面有new Handler().postDelayed(new Runnable(){
@Override
public void run() {
//延迟的时间到了执行
}
},延迟的时间);
方法二:可以通过java里面的线程来写,new Thread().sleep(延迟时间);时间到了会继续执行;
方法三:java定时器(有很多方法)例如:
Timer timer = new Timer();
timer.schele(new TimerTask() {
public void run() {
System.out.println("-------设定要指定任务--------");
}
}, long delay,long period);
delay延迟的时间,period为多久执行一次;
个人推荐用方法一,毕竟安卓系统自带的,并且安卓不适合加定时器,如果处理不当一直执行的话,要么卡,要么程序崩溃。还有发布版本可能审核不通过。
Ⅷ Android 定时执行任务的几种方法
alarmManager
Timer
Handler
等
Ⅸ android定时器alarmmanager和timer的区别
Java的Timer类可以用来计划需要循环执行的任务。
简单的说,一个Timer内部封装装了“一个Thread”和“一个TimerTask队列”,这个队列按照一定的方式将任务排队处理。封装的Thread在Timer的构造方法调用时被启动,这个Thread的run方法按照条件去循环这个TimerTask队列,然后调用TimerTask的run方法。
但是,如果CPU进入了休眠状态,那么这个thread将会因为失去CPU时间片而阻塞,从而造成我们需要的定时任务失效。上述定时任务失效的场景分析:假设定时任务的条件是到了时间xx:yy才能执行,但由于cpu休眠造成线程阻塞的关系,当前系统时间超过了这个时间,即便CPU从终端中恢复了,那么由于条件不满足,定时任务在这一次自然就失效了。
它需要用WakeLock让CPU 保持唤醒状态。这样会大量消耗手机电量,大大减短手机待机时间。这种方式不能满足需求。
AlarmManager是Android 系统封装的用于管理RTC的模块,RTC(Real Time Clock) 是一个独立的硬件时钟,可以在 CPU 休眠时正常运行,在预设的时间到达时,通过中断唤醒CPU。这意味着,如果我们用 AlarmManager 来定时执行任务,CPU 可以正常的休眠,只有在需要运行任务时醒来一段很短的时间。
Ⅹ 如何在android应用中定时进行操作
在手机上安装定时达人软件
定时达人有自己的网站,相关应用在各大应用商城也有。可以通过apk进行安装,可以从应用商店下载安装。我是从google play上下载安装的。
添加新任务
设置任务——设置时间
设置任务——给任务取个名字
设置任务——添加新任务
选择运行程序一栏
设置任务——选择定时打开的应用程序
点击应用程序,选择读者。
保存设置
这里需要点两次保存,之后就回到了定时达人主页面。
8
通过立即执行进行测试设置效果
单击定时打开读者一栏,在弹出下拉框中选择立即执行来立即执行任务。在设置正确的情况下读者应用被打开,通知栏会有相应通知提示。
在之前的设置步骤中,保持了默认的循环方式,即周循环,一周的每一天都选中。按照设置,每一天的指定时间都可以自动打开相应应用。