android 循环服务,在Android中调度循环任务

我不确定,但据我所知,我同意我的看法。如果我错了,我总是接受最好的答案。

报警经理

警报管理器保持CPU唤醒锁,只要警报接收器的锁onReceive()方法正在执行。这保证了在你处理完广播后手机不会睡觉。一次onReceive()返回时,警报管理器将释放此唤醒锁。这意味着,在某些情况下,电话会在您的onReceive()方法完成。如果你的报警器呼叫Context.startService(),在所请求的服务启动之前,手机可能会休眠。为了防止这件事,你的BroadcastReceiver和Service将需要实现单独的唤醒锁定策略,以确保电话继续运行直到服务可用为止。

注意:警报管理器适用于您希望在特定时间运行应用程序代码的情况,即使您的应用程序当前没有运行。对于正常的定时操作(滴答、超时等),使用Handler更容易,效率更高。

定时器timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {

synchronized public void run() {

\\ here your todo;

}

}}, TimeUnit.MINUTES.toMillis(1), TimeUnit.MINUTES.toMillis(1));

Timer有一些缺点可以通过ScheduledThreadPoolExecutor..所以这不是最好的选择

ScheduledThreadPoolExecutor.

你可以用java.util.Timer或ScheduledThreadPoolExecutor(首选)在后台线程上定期安排动作。

下面是一个使用后者的示例:ScheduledExecutorService scheduler =

Executors.newSingleThreadScheduledExecutor();scheduler.scheduleAtFixedRate      (new Runnable() {

public void run() {

// call service

}

}, 0, 10, TimeUnit.MINUTES);

所以我更喜欢ScheduledExecutorService

但是也要考虑到,如果在应用程序运行时将发生更新,则可以使用Timer,如其他答案或较新的答案所示ScheduledThreadPoolExecutor..如果应用程序在未运行时仍将进行更新,则应使用AlarmManager.警报管理器适用于您希望在特定时间运行应用程序代码的情况,即使您的应用程序当前没有运行。

请注意,如果您计划在关闭应用程序时进行更新,则每十分钟更新一次是非常频繁的,因此可能会太耗电。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值