android 实现定时任务的几种方式

一、Timer 实现定时任务:

private Timer timer;

timer = new Timer();
// 1s后执行task,经过6s再次执行
timer.schedule(timerTask, 1000, 1000 * 6);

// 定时刷新
Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 1) {
//执行任务操作
}
};
};
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};

//结束定时任务

timer.cancel();


//这个是在网上找的方法没试过...

二、Handler实现定时任务:

void onCreate(){ 
  ......
  Handler handler = new Handler(); 
  Runnable runnable = new Runnable(){ 
   @Override
   public void run() { 
    // TODO Auto-generated method stub 
    // 在此处添加执行的代码 
    handler.postDelayed(this, 50);// 50ms后执行this,即runable 
   }  
  };  
  handler.postDelayed(runnable, 50);// 打开定时器,50ms后执行runnable操作 
}
void onDestroy(){ 
 ......
 handler.removeCallbacks(this);// 关闭定时器处理 
}

void onCreate(){ 
......
Handler handler = new Handler();    
 Runnable runnable = new Runnable(){  
 @Override
 public void run() { 
   // TODO Auto-generated method stub    
   // 在此处添加执行的代码 
              doSomeThing();
   handler.removeCallbacks(this); //移除定时任务  
     }   
 }; 
 handler.postDelayed(runnable, 50);// 打开定时器,50ms后执行runnable 
}

三, AlarmManager实现精确定时操作:

 /**
* 启动或停止定时器
* @param context
* @param isOn 开关
*/
public static void setServiceAlarm(Context context, Boolean isOn) {


Intent intent = new Intent(context, GPSService.class);
PendingIntent pi = PendingIntent.getService(context, 0, intent, 0);
AlarmManager mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if (isOn) {
mAlarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), POLL_INTERVAL, pi);
}else {
mAlarmManager.cancel(pi);
pi.cancel();
}

}

/**
* 判断定时器的启动或停止状态
* @param context
* @return
*/
public static boolean isServiceAlarmOn(Context context){

Intent intent = new Intent(context, GPSService.class);
PendingIntent pi = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_NO_CREATE);
return pi != null;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android实现定时任务,可以使用以下几种方式: 1. 使用系统提供的 AlarmManager 类: AlarmManager 是 Android 系统提供的一个系统级别的闹钟服务,可以在指定的时间触发一个 Intent,从而实现定时任务的效果。 示例代码: ``` AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(this, AlarmReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); long triggerAtTime = System.currentTimeMillis() + 60 * 1000; // 1 分钟后触发 alarmManager.setExact(AlarmManager.RTC_WAKEUP, triggerAtTime, pendingIntent); ``` 2. 使用 Handler 类: Handler 可以实现定时任务的效果,通过 postDelayed() 方法可以实现延迟一段时间后执行 Runnable 对象的功能。 示例代码: ``` private Handler mHandler = new Handler(); private Runnable mTask = new Runnable() { @Override public void run() { // 定时任务代码 mHandler.postDelayed(this, 60 * 1000); // 1 分钟后再次执行 } }; // 在 onCreate() 方法中调用 mHandler.postDelayed(mTask, 60 * 1000); // 1 分钟后执行 ``` 3. 使用 Timer 类: Timer 是 Java 中提供的一个定时器类,可以在指定时间间隔内重复执行指定任务。 示例代码: ``` Timer timer = new Timer(); TimerTask task = new TimerTask() { @Override public void run() { // 定时任务代码 } }; // 在 onCreate() 方法中调用 timer.schedule(task, 60 * 1000, 60 * 1000); // 1 分钟后执行,之后每隔 1 分钟再执行一次 ``` 以上是几种Android实现定时任务方式,开发者可以根据自己的需求选择合适的方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值