全局定时器 AlarmManager

本文介绍如何利用Android系统的AlarmManager实现定时更换壁纸的功能。通过设置执行时间间隔和指定动作,实现服务与应用程序的独立运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实际应用中,有的时候,需要时间服务不依赖应用程序而存在

为了达到服务与应用程序独立的目的,需要获得AlarmManager 对象,可能通过如下代码获得:

AlarmManager  am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

AlarmManager有一个重要的方法public  void  setRepeating(int type,  long triggerAtTime  ,long  interval,  PendingIntent  operation),通过该方法,可以设置执行时间间隔和相应的动作。

这个4个参数的含义如下:

(1)  type:  表示警报类型,一般取值为AlarmManager.RTC (表示正常的定时器)和AlarmManager.RTC_WAKEUP(除了有定时器的功能,还会发出警报声: 响玲、震动)

(2)  triggerAtTime:  第1次运行要等待的时间,单位ms

(3)  interval:  表示执行的时间间隔,单位ms

(4)  operation:  一个PendingIntent对象,表示到时间后要执行的操作,PendingIntent 与 Intent 类似,与Intent一个区别是,PendingIntent 可以脱离应用程序而存在

使用AlarmManager 可以实现很多功能,下面是一个定时更换壁纸的示例,先看示意图

主要代码:

public class ChangeWallpaperService extends Service  {
private static int index = 0;
private int[] resIds = new int[]{R.raw.wp1, R.raw.wp2, R.raw.wp3, R.raw.wp4, R.raw.wp5};

//onStart() 方法在每次访问服务时都会被调用
@Override
public void onStart(Intent intent, int startId)  {
if(index == 5)
index = 0;
InputStream inputStream = getResources().openRawResource(resIds[index++]);
try  {
setWallpaper(inputStream);
}
catch (Exception e) {}
super.onStart(intent, startId);
}

// onCreate() 只会执行一次
@Override
public void onCreate()  {
super.onCreate();
}

@Override
public IBinder onBind(Intent intent)  {
return null;
}
}

在创建PendingIntent 对象时指定了 ChangeWallpaperService.class,这说明这个PendingIntent对象与ChangeWallpaperService 绑定。AlarmManager  在执行任务时会执行

ChangeWallpaperService  类中的onStart()

代码请参见 ch08_changewallpaper工程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值