Android 通过PendingEvent向JobScheduler添加新任务

Android 通过PendingEvent向JobScheduler添加新任务,android,android-appwidget,android-jobscheduler,Android,Android Appwidget,Android Jobscheduler,由于安卓团队发布了新的后台服务限制,在安卓O中设置一个点击挂起的Widget(主屏幕)按钮来启动Intent服务存在一个问题。我的问题是:如何通过点击Widget按钮向JobScheduler添加一个新任务 如果在安排作业时几乎不涉及I/O,则让应用程序小部件按钮使用广播pendingent在广播接收器中触发onReceive()。在onReceive()中,安排作业 原则上,您甚至可以将其用于涉及I/O的工作,使用BroadcastReceiver中的goAsync()。或者,使用服务pend

由于安卓团队发布了新的后台服务限制,在安卓O中设置一个点击挂起的Widget(主屏幕)按钮来启动Intent服务存在一个问题。我的问题是:如何通过点击Widget按钮向JobScheduler添加一个新任务

如果在安排作业时几乎不涉及I/O,则让应用程序小部件按钮使用广播
pendingent
广播接收器中触发
onReceive()
。在
onReceive()
中,安排作业


原则上,您甚至可以将其用于涉及I/O的工作,使用
BroadcastReceiver
中的
goAsync()。或者,使用服务
pendingent
调用一个只执行调度作业所需的I/O的
IntentService

据我所知,挂起的intent不会在android O上启动,因为它们对startService()有限制,这与在android清单(非运行时)中注册的广播相同。所以主要的问题是,小部件提供者作为清单中的接收者有限制。只需要在android o上测试一下preview@AndrewZabarowski:“挂起的意图不会在android O上启动”--禁令不在
pendingent
上。禁令是禁止在后台启动服务。不仅通知可以免于该禁令,而且在
pendingent
上还有
getForegroundService()
,以防您想要启动前台服务。