Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AlarmManager是否需要WakefulBroadcastReceiver(或同等产品)_Android_Alarmmanager_Android Alarms - Fatal编程技术网

Android AlarmManager是否需要WakefulBroadcastReceiver(或同等产品)

Android AlarmManager是否需要WakefulBroadcastReceiver(或同等产品),android,alarmmanager,android-alarms,Android,Alarmmanager,Android Alarms,我正在使用SetExactAndAllowHileIDLE和API 25及以上版本的AlarmManager。此外,我还使用“标准”广播接收器来接收由警报触发的挂起内容。此外,在API 26中,WakefulBroadcastReceiver(似乎更多地是为服务而不是报警而设计的)已被弃用 API 26中是否替换了该类 我是否需要使用AlarmManager的等效类(因为它已被弃用),或者在使用SetExactAndAllowHileId报警时,使用标准广播接收器足以唤醒设备 最后,当与Alar

我正在使用SetExactAndAllowHileIDLE和API 25及以上版本的AlarmManager。此外,我还使用“标准”广播接收器来接收由警报触发的挂起内容。此外,在API 26中,WakefulBroadcastReceiver(似乎更多地是为服务而不是报警而设计的)已被弃用

  • API 26中是否替换了该类
  • 我是否需要使用AlarmManager的等效类(因为它已被弃用),或者在使用SetExactAndAllowHileId报警时,使用标准广播接收器足以唤醒设备
  • 最后,当与AlarmManager一起使用时,我是否需要向清单中添加唤醒锁定权限

  • WakefuleBroadcastReceiver最初用于处理由于唤醒(通过报警)而需要执行的操作,这些操作可能需要一段时间,例如进行网络传输。为此,使用了
    WakefulBroadcastReceiver
    ,以便能够可靠地启动
    服务
    ,并在设备返回低功率状态之前实际执行。它已被弃用,因为相同类型的行为可以使用其他功能完成,例如前台服务、
    JobScheduler
    或高优先级推送通知。至于唤醒锁,这完全取决于当你的闹钟响起时你需要做什么。本文可能有助于理解
    AlarmManager

    在API 23中引入的打盹模式下,警报的功能逐渐减弱。从Oreo(API 26)开始,后台操作受到更严格的限制,以延长电池寿命

    如果您对使用alpha-level发行版软件还满意,那么新的
    WorkManager
    就是一个不错的选择,因为它可以根据运行代码的设备为您处理许多版本依赖关系。它将自动使用
    JobScheduler
    AlarmManager
    等,具体取决于您需要什么以及您正在执行的操作系统的版本


    如果您不想使用
    WorkManager
    ,我建议您深入查看
    JobScheduler
    ,看看它是否能满足您的需要。您可能需要执行一些API级别检查,并让您的代码在某些平台上使用
    AlarmManager
    w/
    WakefulBroadcastReceiver
    ,在其他平台上使用
    JobScheduler

    感谢您的回答和时间。我的闹钟实际上是一个闹钟,因此,除了提醒用户之外,不需要做很多工作。因此,我认为我仍然应该使用AlarmManager发出的警报,对吗?是和否。它实际上可以归结为当设备处于低功耗状态时,您期望它做什么。如果你想让它提醒用户并完全唤醒设备,你必须使用
    setExactAndAllowHileIDLE()
    来触发警报,但要通知用户并唤醒屏幕,你必须强迫设备停止打瞌睡。