① android 定时器如何让某天某个时间启动
Android中使用AlarmManager进行定时操作,现在需要启动多个定时器,但无论采用哪种方式后面的定时器都会将前面的定时器覆盖掉(Android系统版本2.1),只启动最后一个定时器,见代码 java code// 方式一for (int i = 0; i < 10; i ++) { ... AlarmManager am = null; am = (AlarmManager) context.getApplicationContext().getSystemService(Context.ALARM_SERVICE); ... Intent i = new Intent("xxx"); PendingIntent sender = PendingIntent.getBroadcast(context.getApplicationContext(), 0, i, PendingIntent.FLAG_UPDATE_CURRENT); ... am.setRepeating(...);}// 方式二AlarmManager am = null;am = (AlarmManager) context.getApplicationContext().getSystemService(Context.ALARM_SERVICE);for (int i = 0; i < 10; i ++) { ... Intent i = new Intent("xxx"); PendingIntent sender = PendingIntent.getBroadcast(context.getApplicationContext(), 0, i, PendingIntent.FLAG_UPDATE_CURRENT); ... am.setRepeating(...);} 请问如果要实现启动多个定时器应该怎么操作?Android系统的闹钟就是采用AlarmManager进行操作的,如何才能启动多个定时器呢?先谢谢大家了 ------解决方案-------------------- public static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags) requestCode 需要是唯一的
② 新手对于Android定时器的问题
私信给你了
③ 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 Studio定时器!
你的意思是,假设3个RadioButton,第一个设为10秒,第二个设为20秒,第三个设为30秒,然后一起倒计时到0吗?如果是这样的话,只需要在Handler的handleMessage中去减时间就行了。
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
xx.setText(Integer.parseInt(xx.getText()-1);
}
};
⑤ android设置定时器调用时设置时间
你的意思是,假设3个RadioButton,第一个设为10秒,第二个设为20秒,第三个设为30秒,然后一起倒计时到0吗?如果是这样的话,只需要在Handler的handleMessage中去减时间就行了。
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
xx.setText(Integer.parseInt(xx.getText()-1);
}
};
⑥ 有关Android中定时器的问题
你这里犯了一个基本的错误。
你的timer是没有问题的,问题在Toast.makeText(e201301.this, "ABCD", Toast.LENGTH_LONG).show();中。
另外你说没有报错,我不太相信,logcat里面应该会有log出来的。除非你的logcat有问题。
另外把Toast.makeText(e201301.this, "ABCD", Toast.LENGTH_LONG).show();
换成其他基本的语句应该是不会有问题的。
这里的问题主要出在你用timer开了一个新线程,然后你希望在新线程里面,直接在UI线程上显示东西。于是就有错了。
如果你只是为了测试timer,你可以把Toast.makeText(e201301.this, "ABCD", Toast.LENGTH_LONG).show();
换成Log.e("Timer在运行", "ABCD");
这样你就会看到logcat里面,按照你设定的时间,不断的输出这句LOG。也就是Timer正常运行了。
如果你依旧希望能在UI线程上显示什么,那么你可以参考下线程间通信的handle、Message。或者简单利用AsyncTask等
⑦ android 定时器暂停 可以用canel()方法 但我又想再次唤起 用什么方法
android 定时器是一个线程,线程canel 以后,只能重新new 并调用 start启动。
具体实现代码:
创建线程定时器同理
Thread thread = new Thread();
thread.start(); 启动线程
当线程或定时器停止后,需要重新new
thread = new Thread();
thread.start(); 重新启动线程或定时器
⑧ android 哪种 定时器比较好
AlarmManager
这个可以唤醒cpu。
其他的在屏幕关掉后不会运行
⑨ 安卓定时器Handler如何关闭
{
publicTimeCounts(longmillisInFuture,longcountDownInterval){
super(millisInFuture,countDownInterval);//参数依次为总时长,和计时的时间间隔
}
@Override
publicvoidonFinish(){//计时完毕时触发
}
@Override
publicvoidonTick(longmillisUntilFinished){//计时过程显示
//倒计时数可以写在这儿
}
}
TimeCounts timeCounts = new TimeCounts(30000, 1000);//总时长30s,间隔1s
timeCounts.start();//倒计时开始
timeCounts.cancel();//取消倒计时
⑩ 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 可以正常的休眠,只有在需要运行任务时醒来一段很短的时间。