何时将使用结果GcmNetworkManager.RESULT_RESCHEDULE再次执行oneOffTaks

时间:2017-02-07 03:21:44

标签: android networking google-cloud-messaging schedule gcm-network-manager

所以从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,并将重试。所以我想知道什么时候会重试?

由于

1 个答案:

答案 0 :(得分:2)

根据此documentationRESULT_RESCHEDULE表示您的任务失败,然后重新安排您的任务,因此当条件满足时它将再次执行。

  

默认情况下,如果您从RESULT_RESCHEDULE返回onRunTask,只要您为其定义了条件(充电,互联网可用),您的任务就会再次执行。

     
      
  • 一个选项,如果您只需要限制重新安排的次数,那就是存储重新安排的次数,当它达到您定义的限制时,返回RESULT_FAILURE而不是RESULT_RESCHEDULE
  •   
  • 第二个,如果您需要更多控制权,则返回RESULT_FAILURE并安排OneOff任务,通过一些特殊标记使其可识别,并再次计算您在某处安排了多少次,这样您将成为能够控制任务执行之间的计数和延迟
  •   

但是,如果您的代码经常失败并且必须重试,则可以检查此tutorial。 Java 7/8库提供了丰富且不引人注目的API,可以快速,可扩展地解决这个问题。

希望这有帮助!