3

介绍

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

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

如果互联网处于活动状态,最喜欢的请求调用会正常发生,但我想在离线模式下支持它。

我遇到了 GCM 网络管理器,它允许我在网络处于活动状态时安排任务,这样每个离线的最喜欢的请求都会被安排。

问题和我的问题

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

  1. 我可以提交多个具有相同标签的一次性任务并确保它们不会被覆盖吗?我问这个是因为文档说setUpdateCurrent一次性任务构建器类的方法默认为 false 以表明它没有被覆盖。但是,该setTag方法指出,如果标签相同,则将更新预先存在的任务,这不是我想要的。我想排队相同的任务,因为它们将是独特的音乐专辑收藏请求

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

这里有两个任务,它们有唯一的标签,第一个首先提交,然后在第二个之后不久。

  • 标签 = 1A-最爱
    • 标签 = 1A-不喜欢

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

感谢您阅读我的问题。

4

1 回答 1

1

您是否尝试过类似的方法:

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

这应该确保您的第一个请求在发送之前被取消,或者它已成功完成,并且第二个请求将正确地“取消收藏”有问题的项目。

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

于 2016-01-26T00:31:17.113 回答