android 程序中 经常用到的几种定时器

时间:2021-08-30 02:09:50

上片说到了 需要用1个 定时器去 动态的绘制。

定时器 - 也就是个   你设置了时间  比如 3秒重复1个操作, 那么当你设置好 开启后, “他” 就会帮你完成这个重复任务,除非各种情况制止“他”停止


  /**
     * alarm -  这个能保持程序一直处于唤醒的状态 也就是说  拔出USB  待机 等
     */
	{
		AlarmManager  alarmManager = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);	
		//PendingIntent  pending = PendingIntent.getActivities(context, requestCode, intents, flags) 
		//PendingIntent  pending = PendingIntent.getActivity(context, requestCode, intent, flags)  
		//PendingIntent  pending = PendingIntent.getBroadcast(context, requestCode, intent, flags)
		//PendingIntent  pending = PendingIntent.getService(context, requestCode, intent, flags)
		
		//PendingIntent  pending = PendingIntent.writePendingIntentOrNullToParcel(sender, out)
		//PendingIntent  pending = PendingIntent.readPendingIntentOrNullFromParcel(in)
		
		//在指定的延时后,发送,但是不唤醒设备
		int type1 = AlarmManager.ELAPSED_REALTIME;
		//在指定的延时后   发送 并唤醒设备(常用)
	    int type2 =AlarmManager.ELAPSED_REALTIME_WAKEUP;
	    //在指定的时刻  发送 并唤醒设备
	    int type3 =AlarmManager.RTC;
	    //在指定的时刻   发送   唤醒设备
	    int type4 =AlarmManager.RTC_WAKEUP;
		
		//alarmManager.set(type, triggerAtMillis, operation)    发送1次
		//alarmManager.setRepeating(type, triggerAtMillis, intervalMillis, operation); 重复发送
		
	}

	
	
	/**
	 *   上面的alarm是可以保持 程序处于唤醒状态的。
	 *   下面的并没有, 所以当手机拔出 USB 和 屏幕处于待机状态一会后,可能是会出现问题的,比如10分钟联网发送一次数据
	 *   当然这个也是可以解决的,下篇文章说明
	 * 
	 */
	
	
	/**
	 * timer - 定时器
	 */
	{
		Timer time = new Timer();
		TimerTask timeTask = new TimerTask(){
			@Override
			public void run() {
			    //执行你自己的操作	
			}
		};
		
		int  wait_time = 1000;    //等待1秒后开始
		int  repeate_time= 2000;  //重复频率为 2秒
		time.schedule(timeTask, wait_time, repeate_time);
		
		//time.scheduleAtFixedRate(task, when, period)
		
	}
	
	
	/**
	 * 线程定时器
	 */
	{
		Thread th  = new Thread(){
			@Override
			public void run() {
				try {
					 while(true){
						 //执行你的操作
						 //更新UI
						 han.post(new Runnable() {
							@Override
							public void run() {
								// TODO Auto-generated method stub								
							}
						}); 
						 
						 
						 thread.sleep(3000);
					 }
				} catch (Exception e) {
				}
			}	
		};
		
		
		Thread th1  = new Thread(){
			@Override
			public void run() {
				try {
					 while(true){
						 //执行你的操作
						 //更新UI
						 han.sendMessage(new Message());
						 thread.sleep(3000);
					 }
				} catch (Exception e) {
				}
			}	
		};		
	
	
	
	
		Thread th2  = new Thread(){
			@Override
			public void run() {
				try {
					 while(true){
				         han.postDelayed(new Runnable() {
							@Override
							public void run() {
								//执行你的操作
							}
						}, 3000);
						
					 }
				} catch (Exception e) {
				}
			}	
		    };		
  }