gpt4 book ai didi

android - 如何从 AlarmManager 启动服务

转载 作者:太空狗 更新时间:2023-10-29 12:43:22 26 4
gpt4 key购买 nike

我需要启动一个服务,每隔 x 分钟做一次长时间的操作。为此,我有一个 AlarmManager。在 http://developer.android.com/reference/android/app/AlarmManager.html 阅读文档我发现了这个:

只要警报接收器的 onReceive() 方法正在执行,警报管理器就会持有 CPU 唤醒锁。这保证了在您处理完广播之前手机不会休眠。一旦 onReceive() 返回,Alarm Manager 释放这个唤醒锁。这意味着手机在某些情况下会在您的 onReceive() 方法完成后立即休眠。如果您的警报接收器调用了 Context.startService(),则电话可能会在请求的服务启动之前进入休眠状态。为防止这种情况,您的 BroadcastReceiver 和服务将需要实现单独的唤醒锁定策略,以确保手机继续运行直到服务可用。

那么,我如何才能从 AlarmManager 启动服务并确保它启动。我知道如何使用唤醒锁,但没有任何意义,我的意思是,我可以在服务中使用唤醒锁,但文档说“手机可能会在请求的服务启动之前休眠”

最佳答案

Use WakefulBroadcastReceivermy WakefulIntentService .

基本模式是让 AlarmManager 调用一个 BroadcastReceiver,后者获取 WakeLock 并启动服务。然后该服务负责释放 WakeLockWakefulBroadcastReceiverWakefulIntentService 简单地 bundle 了该模式并处理一些边缘情况。

关于android - 如何从 AlarmManager 启动服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21908253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com