- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在为我们的 android 客户端使用 Parse,但存在缓存问题。
每个设备都有一个唯一的注册 channel 。如果我上网并删除数据浏览器中的 channel ,设备仍然认为它已经注册。如果我为该 channel 调用订阅,它似乎没有进行此调用,我的猜测是它会检查本地缓存,因为这表明它已经注册,所以它会进行此调用。
如果我调用此方法 PushService.getSubscriptions,它会给我一个与在线内容不一致的 channel 列表。某处说 PushService.getSubscriptions 在本地缓存,这真的很奇怪吗?
然后我尝试做这样的事情来确保它总是更新到最新:
PushService.setDefaultPushCallback(this, null);
Set<String> channels = PushService.getSubscriptions(_context);
for(String channel : channels){
PushService.unsubscribe(this, channel);
}
PushService.setDefaultPushCallback(this, RD4MainV4Activity.class);
PushService.subscribe(this, licenseKeyValue, RD4MainV4Activity.class);
但是我得到了错误。我试过以不同的顺序做这些,但无论我做什么,我都会遇到问题。
09-03 17:13:45.494: E/AndroidRuntime(29029): java.lang.RuntimeException: java.lang.IllegalArgumentException: Operation is invalid after previous operation.
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.PushRouter$8$1.run(PushRouter.java:235)
09-03 17:13:45.494: E/AndroidRuntime(29029): at android.os.Handler.handleCallback(Handler.java:733)
09-03 17:13:45.494: E/AndroidRuntime(29029): at android.os.Handler.dispatchMessage(Handler.java:95)
09-03 17:13:45.494: E/AndroidRuntime(29029): at android.os.Looper.loop(Looper.java:136)
09-03 17:13:45.494: E/AndroidRuntime(29029): at android.app.ActivityThread.main(ActivityThread.java:5001)
09-03 17:13:45.494: E/AndroidRuntime(29029): at java.lang.reflect.Method.invokeNative(Native Method)
09-03 17:13:45.494: E/AndroidRuntime(29029): at java.lang.reflect.Method.invoke(Method.java:515)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
09-03 17:13:45.494: E/AndroidRuntime(29029): at dalvik.system.NativeStart.main(Native Method)
09-03 17:13:45.494: E/AndroidRuntime(29029): Caused by: java.lang.IllegalArgumentException: Operation is invalid after previous operation.
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.ParseAddUniqueOperation.apply(ParseAddUniqueOperation.java:96)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.ParseObject.performOperation(ParseObject.java:2734)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.ParseObject.addAllUnique(ParseObject.java:2850)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.ParseObject.addUnique(ParseObject.java:2835)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.PushRouter.subscribe(PushRouter.java:618)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.PushRouter$1.then(PushRouter.java:72)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.PushRouter$1.then(PushRouter.java:69)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.Task$10.run(Task.java:448)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.Task$ImmediateExecutor.execute(Task.java:673)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.Task.completeImmediately(Task.java:444)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.Task.continueWith(Task.java:318)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.Task.continueWith(Task.java:329)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.Task$8.then(Task.java:381)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.Task$8.then(Task.java:373)
09-03 17:13:45.494: E/AndroidRuntime(29029): at com.parse.Task$11.run(Task.java:481)
09-03 17:13:45.494: E/AndroidRuntime(29029): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
09-03 17:13:45.494: E/AndroidRuntime(29029): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
09-03 17:13:45.494: E/AndroidRuntime(29029): at java.lang.Thread.run(Thread.java:841)
我的梦想 senario 是我可以获得该设备的在线版本。然后检查它是否正确,如果 channel 丢失或设备注册了错误的 channel ,则修复此问题。
我可以用任何方式检查吗?
最佳答案
我遇到过类似的问题,但能够通过一些技巧解决。
使用当前版本的 Parse(撰写本文时为 1.9.2),您订阅 channel 的方式是使用 ParsePush.subscribeInBackground(channelname)。此方法自动将字符串“channelname”添加到用户安装对象中名为“channels”的字符串数组中,但无论如何,对我来说,抛出了上面给出的相同错误:
java.lang.RuntimeException: java.lang.IllegalArgumentException: Operation is invalid after previous operation.
我能够解决这个问题的方法是编写我自己的 subscribeInBackground 版本,它是这样的:
ParseInstallation.getCurrentInstallation().put("channels",
Arrays.asList(new String[]{
"channelname"
}));
ParseInstallation.getCurrentInstallation().saveInBackground();
要取消订阅,只需执行相反的操作:
ParseInstallation.getCurrentInstallation().put("channels",
Arrays.asList(new String[]{})); //Put the empty list to unsubcribe!
ParseInstallation.getCurrentInstallation().saveInBackground();
这依赖于您管理 channel 数组,但不会莫名其妙地崩溃。
关于android - 解析 Android : subscribe/unsubscribe not really coherent with online,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25648039/
我试图“真正”理解进程和线程 - 我读过有关它们的书籍和文章,但总体情况似乎总是缺少一些东西。当然,我可以喋喋不休地谈论细节,例如每个进程如何拥有自己的内存空间以及属于同一进程的线程如何共享相同的内存
在 Perl 的描述中 -i[extension]功能在 http://perldoc.perl.org/perlrun.html ,与以下程序实质上相同的代码被视为使用 perl -pi.orig
我目前正在下类后的空闲时间参加 Coursera 上的 Scala 类(class),试图最终尝试函数式编程。我目前正在处理一项任务,我们应该“计算”包含某个对象的两个集合的并集。我有意省略了细节,因
这里有人说会开放攻击 How do you serialize javascript objects with methods using JSON 这对我来说是一个相当肤浅的答案,因为为什么它比经典
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我正在尝试使用 glsl 在 GPU 中实现图像处理算法,如高斯滤波、双边滤波。 我对哪一部分是“真正的”并行执行感到困惑。例如,我有一个 1280*720 的预览作为纹理。我不太确定哪个部分真正运行
你好 不要说这是一个重复的问题,因为我已经阅读了两天。他们中没有一个真正提供有用的答案。 我在 SD 卡上的一个文件夹中有许多不同的文件。想要根据 apk、txt、mp3、avi、jpg 打开正确的应
我正在尝试使用以下代码保存一些代码。我有一个对象,其中的变量与表行的名称相同,因此我可以创建一个像这样的插入: $query = "INSERT INTO table "; $colu
使用 Qt 我知道 private slots 意味着插槽在直接调用时是私有(private)的,但是 connect() 仍然可以允许信号连接到插槽是否私有(private),公开的,或者我猜, p
考虑以下语句: int *pFarr, *pVarr; int farr[3] = {11,22,33}; int varr[3] = {7,8,9}; pFarr = &(farr
我一直在使用 static 关键字来定义内部链接。后来,我改用 C++ 风格,将本地事物包装在匿名命名空间中。 然而,当我使用匿名命名空间多年后,我开始认为 static 关键字更容易使用! 一个常见
我正在尝试使用 ffmpeg 和 对 DVD 质量的视频进行编码nl 表示 过滤(嗯,这就是标题所说的)。但即使在顶级 Core i7 CPU 上,我每秒也只有 12 帧,并且只有一个内核在使用(75
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在构建我的第一个 Backbone.js 应用程序,但我很困惑我应该向 View 赋予或隐藏多少责任。 在我的示例中,我正在构建一个从集合动态生成的丰富 UI 表(类似于 YUI 的数据网格)。在
新手用户使用 Azure Linux VM,发现删除 VM(停止计费的必要步骤)会留下难以识别和区分的存储残余,这些残余与我想要保留的 Blob(支持 VM 镜像和数据磁盘) , 例如)。 所以我真的
当我在 NetBeans (7.1.2) 中添加组件或任何自动生成注释的内容时,注释每行一个单词。像这样: /* * If * Nimbus * (introduced
我将这个海龟文件加载到两个不同的 OWL 推理器(HermiT 和 RDFox)中: @prefix : . @prefix owl: . @prefix rdf: . @prefix rdfs
我的问题很简单,但(我猜)很难回答: 我的 PHP 网站/Web 应用程序中真的需要完整的模型- View - Controller 设计模式吗? 我无法理解 Controller 如何与 PHP 一
新手用户使用 Azure Linux VM,发现删除 VM(停止计费的必要步骤)会留下难以识别和区分的存储残余,这些残余与我想要保留的 Blob(支持 VM 镜像和数据磁盘) , 例如)。 所以我真的
我将这个海龟文件加载到两个不同的 OWL 推理器(HermiT 和 RDFox)中: @prefix : . @prefix owl: . @prefix rdf: . @prefix rdfs
我是一名优秀的程序员,十分优秀!