首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android AlarmManager只能运行一次

Android AlarmManager是Android系统提供的一个用于定时执行任务的类。它可以在指定的时间点或者间隔时间内触发一个广播或者启动一个服务,用于执行一些需要定时执行的操作。

Android AlarmManager的特点和优势包括:

  1. 灵活性:可以根据需求设置精确的触发时间点或者间隔时间。
  2. 可靠性:即使在设备重启后,之前设置的定时任务也能够被保留并继续执行。
  3. 节省电量:AlarmManager会尽量将任务集中处理,避免频繁唤醒设备,从而减少电量消耗。
  4. 多样性:可以触发广播或者启动服务,适用于各种不同的定时任务需求。

Android AlarmManager的应用场景包括但不限于:

  1. 提醒和闹钟应用:可以用于定时提醒用户进行某项任务或者设置闹钟。
  2. 定时同步数据:可以定时触发数据同步操作,确保数据的及时更新。
  3. 定时任务执行:可以定时执行一些后台任务,如定时发送通知、定时清理缓存等。
  4. 定时检查更新:可以定时检查应用程序的更新,并提示用户进行更新操作。

腾讯云提供了一系列与定时任务相关的产品和服务,其中包括:

  1. 云函数(SCF):腾讯云函数是一种无服务器的事件驱动型计算服务,可以通过定时触发器实现定时任务的执行。详情请参考:云函数产品介绍
  2. 云原生应用引擎(TKE):腾讯云原生应用引擎提供了一种基于容器的应用托管服务,可以通过定时任务实现定时执行容器中的任务。详情请参考:云原生应用引擎产品介绍
  3. 云服务器(CVM):腾讯云服务器提供了弹性的计算能力,可以通过定时任务实现定时执行脚本或者命令。详情请参考:云服务器产品介绍

总结:Android AlarmManager是Android系统提供的定时任务调度类,具有灵活性、可靠性、节省电量和多样性的优势。它可以应用于提醒和闹钟应用、定时同步数据、定时任务执行和定时检查更新等场景。腾讯云提供了云函数、云原生应用引擎和云服务器等产品和服务,可以实现定时任务的执行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android开发笔记(一百六十)休眠模式下的定时器控制

定时器AlarmManager常常用于需要周期性处理的场合,比如闹钟提醒、任务轮询等等。并且定时器来源于系统服务,即使App已经不在运行了,也能收到定时器发出的广播而被唤醒。似此回光返照的神技,便遭到开发者的滥用,造成用户手机充斥着各种杀不光进程,就算通过手机安全工具一再地清理内存,只要定时设定的时刻到达,刚杀掉的流氓App就会死灰复燃。长此以往,手机的运行速度越来越慢,内存也越来越不够用了,更糟糕的是,电量消耗地越来越快。 Android手机越用越慢的毛病老大不掉,为此每次系统版本升级,Android都力图在稳定性、安全性上有所改善。针对定时器AlarmManager的滥用问题,Android从4.4开始,修改了setRepeating方法的运行规则。原本该方法可指定每隔固定时间就发送定时广播,但在Android4.4之后,操作系统为了节能省电,将会自动调整定时器唤醒的时间。比如原来调用setRepeating方法设定了每隔10秒发送广播,但App在实际运行过程中,很可能过了好几分钟才发送一次广播,这意味着该方法将不再保证每次工作都在开发者设置的时间开始。 正如博文《Android开发笔记(七十五)内存泄漏的处理》描述的那样,当时为了演示定时器发生内存泄漏的场景,并没有直接调用setRepeating方法,而是接力调用set方法。App每次收到定时广播之后,还得重新开始下一次的定时任务,如此方可兼容Android4.4之后的持续定时功能。下面是将setRepeating方法改为使用set方法实现的代码例子:

02

Android开发笔记(五十)定时器AlarmManager

Java中的定时器机制有现成的方案,就是Timer+TimerTask。其中TimerTask用来描述时刻到达后的事务处理,而Timer用来调度定时任务,如何时启动、间隔多久再次运行等等。 Timer的调度方法是schedule,主要有三个参数。第一个参数表示用来调度的定时任务,第二个参数表示延迟多久首次启动任务,第三个参数表示间隔多久再次启动任务。 public void schedule(TimerTask task, long delay, long period) 定时任务得自己写个继承自TimerTask的新类,并重写run方法填入具体的事务处理代码。调用Timer的schedule方法,定时任务便会按照调度设置按时启动;TimerTask不能直接设置运行的次数上限,一旦启动就会持续定时运行,除非对象销毁或者调用了TimerTask的cancel方法。调用cancel方法停止定时任务后,若想重启该定时任务,只能重新声明TimerTask对象,并且重新调用schedule方法。 Timer+TimerTask的实质是利用开启Thread来触发定时任务,所以TimerTask实际上运行于非UI线程,也就无法直接操作UI。若想在TimerTask中修改UI控件,得通过Handler发送消息来间接实现。

01
  • Android6.0之后的权限机制对App开发的影响

    随着Android系统的更新换代,每次重大更新的方面也逐步扩展,从4.*主要是增强功能,到5.*主要是美化界面,到6.*主要提高系统安全性,再到7.*和8.*主要支撑各种大屏设备,因此开发者需要对每个大版本的Android重新进行适配。其中6.*主要影响开发工作的升级包括权限管理和休眠模式。 对于权限管理,原本开发者只要在AndroidManifest.xml中声明相关权限,App安装完成之后即可默认获得这些权限。但是6.0引入了新的运行时权限管理机制,即使开发者实现已经声明App的权限,Android在App初次启动之时,仍会提示用户是否允许该App开启相关功能。倘若用户不同意App获得某些权限,毫无疑问App在运行过程中就可能无法正常工作。有关运行时权限的操作代码参见《Android开发笔记(一百五十八)运行时动态授权管理》。 对于休眠模式,即当手机屏幕关闭的时候,系统会自动进入休眠模式,这样原本正在运行的App将进入挂起模式,不能再进行访问网络等常用操作。当然为了保证App不被完全挂死,系统也会定时退出休眠模式,好比青蛙从冬眠之中苏醒过来,在苏醒期间,系统允许挂起的App重新恢复运行,继续先前设定好的任务。可是这个苏醒期是短暂的(通常只有几秒),一旦苏醒期结束,系统又重新进入休眠模式,于是那些App再次挂起,等待下次苏醒期的到来,如此往复。当然,只要手机恢复亮屏,比如用户按下电源键、用户给手机插上电源、手机接到来电等等,系统便自动退出休眠模式,所有挂起的App都会恢复正常运转。 下面逐个说明一下Android6.0的权限管理和休眠模式给App开发带来的影响,注意这些影响可对照《Android Studio开发实战:从零基础到App上线》一书的相应章节: 1、App的SD卡访问权限可能会被用户关闭,导致App无法正常读写SD卡。这点影响《Android Studio开发实战:从零基础到App上线》一书第4章的“4.3 SD卡文件操作”和“4.5 实战项目:购物车”。手机上查看App是否开启存储卡访问功能的界面如下图所示:

    02
    领券