简介
我有一个应用程序,让用户最喜欢的音乐专辑列表。音乐专辑内容存储在设备上以允许离线访问。
最喜欢的选项也通过本地SQLite数据库离线存储
如果互联网处于活动状态,最喜欢的请求呼叫正常发生,但我想在离线模式下支持此功能。
我遇到了GCM网络管理器,它允许我在网络处于活动状态时安排任务,以便安排离线的每个收藏请求。
问题&我的问题
我已经浏览了文档并进行了搜索,但我找不到这些问题的答案。
我可以提交多个具有相同标记的一次性任务,并确保它们不会被覆盖吗?我问这个是因为文档说一个关闭任务构建器类的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' )
}
}
);
方法声明如果标记相同,则将更新预先存在的任务,这不是我想要的。 我想排队同样的任务,因为他们会是独特的音乐专辑收藏请求
我认为可以通过设置我拥有的音乐专辑ID的标签来解决上述问题,但我不知道的是GCM作业管理器执行其任务的顺序。我用了一个例子
这是两个任务,它们有唯一的标签,第一个是先提交,然后是第二个提交。
GCM网络管理员是否会按照提交的顺序执行这些任务?如果在收藏之前提出了不满意的请求,则可能会导致问题。
感谢您阅读我的问题。
答案 0 :(得分:1)
你有没有试过像:
gcmNetworkManager.cancelTask("1A-favourite", MyTask.class);
gcmNetworkManager.schedule(myUnFavoriteTask);
这应该确保您的第一个请求在被发送之前被取消,或者它已成功完成,第二个请求将正确地排除" un-favorite"有问题的项目。
此外,如果任务标记相同且构建器上的.setUpdateCurrent(true),则应该只看到相互替换的任务。正如您所指出的,它默认为false。