所以从Android SDK for GcmNetworkManager
public static final int RESULT_RESCHEDULE
表示任务未能执行,必须重试 回退。
<Menu.Item name='profile' as={ <Link to='profile' /> }>
<Icon name='user' />
My profile
</Menu.Item>
内部MyService
Task task = new OneoffTask.Builder()
.setService(MyService.class)
.setExecutionWindow(0, 15)
.setUpdateCurrent(true)
.setRequiredNetwork(Task.NETWORK_STATE_CONNECTED)
.setRequiresCharging(false)
.build();
mGcmNetworkManager.schedule(task);
当执行失败时,它将返回RESULT_RESCHEDULE,并将重试。所以我想知道什么时候会重试?
由于
答案 0 :(得分:2)
根据此documentation,RESULT_RESCHEDULE
表示您的任务失败,然后重新安排您的任务,因此当条件满足时它将再次执行。
默认情况下,如果您从
RESULT_RESCHEDULE
返回onRunTask
,只要您为其定义了条件(充电,互联网可用),您的任务就会再次执行。
- 一个选项,如果您只需要限制重新安排的次数,那就是存储重新安排的次数,当它达到您定义的限制时,返回
RESULT_FAILURE
而不是RESULT_RESCHEDULE
- 第二个,如果您需要更多控制权,则返回
RESULT_FAILURE
并安排OneOff任务,通过一些特殊标记使其可识别,并再次计算您在某处安排了多少次,这样您将成为能够控制任务执行之间的计数和延迟
但是,如果您的代码经常失败并且必须重试,则可以检查此tutorial。 Java 7/8库提供了丰富且不引人注目的API,可以快速,可扩展地解决这个问题。
希望这有帮助!