GCM网络管理器是按顺序执行的多个一次性任务吗?

时间:2016-01-07 18:35:31

标签: android job-scheduling android-jobscheduler

简介

我有一个应用程序,让用户最喜欢的音乐专辑列表。音乐专辑内容存储在设备上以允许离线访问。

最喜欢的选项也通过本地SQLite数据库离线存储

如果互联网处于活动状态,最喜欢的请求呼叫正常发生,但我想在离线模式下支持此功能。

我遇到了GCM网络管理器,它允许我在网络处于活动状态时安排任务,以便安排离线的每个收藏请求。

问题&我的问题

我已经浏览了文档并进行了搜索,但我找不到这些问题的答案。

  1. 我可以提交多个具有相同标记的一次性任务,并确保它们不会被覆盖吗?我问这个是因为文档说一个关闭任务构建器类的setTag方法默认为false,表明它没有被覆盖。但是,fileTransfer.download( uri, fileURL, function(entry) { Passbook.downloadPass(fileURL); }, function(error) { alert('Error retrieving pass, please try again in a little while.'); }, true, { headers: { "Authorization": "Bearer " + LS.get( 'user_token' ) } } ); 方法声明如果标记相同,则将更新预先存在的任务,这不是我想要的。 我想排队同样的任务,因为他们会是独特的音乐专辑收藏请求

  2. 我认为可以通过设置我拥有的音乐专辑ID的标签来解决上述问题,但我不知道的是GCM作业管理器执行其任务的顺序。我用了一个例子

  3. 这是两个任务,它们有唯一的标签,第一个是先提交,然后是第二个提交。

    • 标签= 1A-favorite
      • 标签= 1A-unfavourite

    GCM网络管理员是否会按照提交的顺序执行这些任务?如果在收藏之前提出了不满意的请求,则可能会导致问题。

    感谢您阅读我的问题。

1 个答案:

答案 0 :(得分:1)

你有没有试过像:

gcmNetworkManager.cancelTask("1A-favourite", MyTask.class);
gcmNetworkManager.schedule(myUnFavoriteTask);

这应该确保您的第一个请求在被发送之前被取消,或者它已成功完成,第二个请求将正确地排除" un-favorite"有问题的项目。

此外,如果任务标记相同且构建器上的.setUpdateCurrent(true),则应该只看到相互替换的任务。正如您所指出的,它默认为false。