android 定时任务
时间: 2023-10-29 21:07:16 浏览: 41
Android 中可以使用 AlarmManager 类来实现定时任务。AlarmManager 可以在指定的时间点或间隔时间内触发一个 PendingIntent。
以下是一个简单的例子,每隔 10 秒钟打印一次日志:
1. 创建一个 PendingIntent:
```java
Intent intent = new Intent(context, MyBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
```
2. 获取 AlarmManager 实例:
```java
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
```
3. 设置定时任务:
```java
// 10 秒钟后触发
long triggerTime = System.currentTimeMillis() + 10 * 1000;
alarmManager.setExact(AlarmManager.RTC_WAKEUP, triggerTime, pendingIntent);
// 每隔 10 秒钟触发一次
long interval = 10 * 1000;
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent);
```
4. 创建一个 BroadcastReceiver 接收定时任务触发的广播:
```java
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 执行定时任务
Log.d("TAG", "定时任务触发了");
}
}
```
需要注意的是,AlarmManager 在 Android 6.0 及以上版本中的行为有所变化,需要使用 setExactAndAllowWhileIdle 或 setAndAllowWhileIdle 方法来保证定时任务的准确性。此外,定时任务可能会被省电模式或后台限制等系统行为所影响,需要谨慎使用。