问题标签 [square-tape]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
119 浏览

java - Android磁带导入错误

我已经开始按方格探索磁带了。导入示例应用程序后,它会显示import error javax.inject.Inject
我如何解决这个问题?

0 投票
0 回答
857 浏览

android - 如何从磁带对象队列中删除“坏”任务?

我正在使用 Square 的Tape库将 HTTP Request 持久保存Task到磁盘,这样如果我发出请求并且由于网络错误或服务器问题等原因而失败,则该请求不会丢失并且可以稍后再试。

是否有推荐的策略来删除“坏”任务ObjectQueue?我可以想象一个可能的场景,您创建一个格式错误的 HTTP 请求任务,将其添加到任务队列中,然后尝试在磁带示例代码中的服务中处理它。因为请求格式不正确(或者它试图命中的服务可能已经退出),所以请求永远不会成功,并且请求只是有点坐在队列中,永远阻止进一步添加的请求被处理。我想一种选择可能是跟踪 head 任务的失败尝试次数。

0 投票
1 回答
2203 浏览

java - 可以从 android 的主线程使用 Square Tape 文件支持的队列吗?

Square 有一个开源项目名称 Tape http://square.github.io/tape/,它实现了一个持久的文件支持队列。所有示例似乎都表明可以从主线程将对象添加到队列中。然而,对于 android 的所有其他最佳实践似乎都表明在主线程上执行 I/O 只是在玩 ANR。

Square Tape 文件支持的队列是否设计为在主线程中使用?如果是这样,是什么让它可靠安全地从主线程使用,而不用担心 ANR 与任何其他形式的 I/O 相比?

0 投票
1 回答
2084 浏览

java - 读取 QueueFile 磁带时出现 EOFException

我正在使用 Square 的Tape库将数据上传到服务器排队。

队列以 JSON 格式存储在 File 中。当应用程序启动时,我初始化队列并开始上传(即,如果在 Wifi 上)但是在用户的某些设备上,我看到EOFException消息'null'(登录 crashlytics)。

FileObjectQueue从现有文件创建对象时会发生错误- 从调试信息收集的实际文件约为 1MB。

任何想法是什么导致了这种情况或如何防止它?- 也许我需要清理一下我的 java.io。

编辑:使用磁带 v1.2.1

更新- 自升级到 1.2.2 后也看到此错误

0 投票
1 回答
989 浏览

android - 使用 Square 的磁带库如何处理调用抽象类

我正在使用Square 的 Tape 库,并且我遇到了一个基本上需要一个抽象 TapeTask 类的要求。但问题是 GsonConverter 的反序列化过程(它实现了库的 FileObjectQueue.Converter - 如示例项目中所示)不能很好地与接口/抽象类一起使用。

我认为这是一个 Gson 反序列化问题,所以我使用自定义 TypeAdapter 注册了我的 Gson 实例,但这仍然无法解决问题。我认为它与 FileObjectQueue.Converter 有关。

我目前正在尝试使用来自我的子任务的讨厌的包装回调接口来解决这个问题。

我的要求是拥有一个 TapeQueue 并能够发送多种类型的任务。所以我有一个 TapeTask 抽象类,并有具体的实现,如 ImageDownloadTask、ImageUploadTask、UrlPostWithRetrofitTask、GoogleAnalyticsTrackerTask 等。所有这些都进入一个队列。

有没有办法做到这一点。我想我的问题归结为: 我需要做什么才能使 FileObjectQueue.Converter 与抽象类很好地配合

提示:P:该类的 javadoc 说“..您还需要在序列化字节数组中包含具体的类名”,但我不确定这意味着什么。如果有人可以解释如何将名称包含在序列化字节数组中,以达到我的目的,我将不胜感激!

0 投票
0 回答
552 浏览

java - Dagger 在磁带任务中注入改造服务

我有改造服务:

在匕首模块中:

//请注意,该模块也提供了restAdapter。

在我正在使用该服务的磁带任务中,我尝试了:

但有了这个 mService 总是空的。虽然 MyTask 已经添加到模块的 @Module(injects = {...}) 中。

所以我尝试在任务的构造函数中传递上下文并用类似的东西注入我的任务:

但仍然让 mService 始终为空。

同样,当在我的活动中注入 MyService 并将其设置为 MyTask 中的一个字段,然后将其传递给已创建的字段时。由于 MyTask 是一个 Tape 任务(square 的磁带库),它在序列化时失败(可以理解):

那么有没有办法在 Tape Task 中正确注入改造服务类?

我不确定我的解释是否正确.. 如果需要,我可以提供更多信息。

谢谢。

0 投票
0 回答
193 浏览

android - 在 Android 上使用 Google Volley 和 Square Tape

安卓菜鸟在这里。几个月前,我被要求修复一些其他菜鸟为手持设备编写的应用程序。它的问题是这些设备主要用于网络不可靠和薄弱的地区。结果,我们的大多数数据上传请求都失败了。

最初的作者决定推出自己的 REST 客户端,也没有实现任何持久性。我正在考虑用经过验证的网络和缓存库替换那些。具体来说,我想Google Volley用于网络和Square Tape持久上传数据。我的信心有点低,因为我的搜索没有抛出任何使用这种组合的实例。

是否Volley使Tape冗余?的缓存和重试机制是否Volley提供与队列相同的功能Tape?我可以看到一个优点,Tape以防止由于应用程序崩溃而丢失数据,但Tape如果我使用 Volley,我还需要吗?

0 投票
3 回答
297 浏览

java - 如何确保我的 Android 应用不会同时访问文件?

我正在构建一个健身应用程序,它会不断记录设备上的活动。我需要经常登录,但我也不想不必要地耗尽用户的电池,这就是为什么我正在考虑将网络呼叫批处理并在无线电激活后立即将它们全部传输,设备是连接到 WiFi 或正在充电。

我正在使用基于文件系统的方法来实现它。我首先将数据保存到一个File- 最终我可能会使用Square 的 Tape来做到这一点 - 但这是我遇到第一个问题的地方。

我不断将新的日志数据写入 . File,但我还需要定期将所有记录的数据发送到我的后端。发生这种情况时,我会删除File. 现在的问题是如何防止这两个操作同时发生?当然,如果我尝试将日志数据写入File,同时其他进程正在读取File并尝试删除其内容,则会导致问题。

我正在考虑使用IntentService本质上充当所有这些操作的队列。而且因为 - 至少我已经阅读了很多 -在单个工作人员中按顺序IntentServices处理s ,因此其中两个操作不可能同时发生,对吧?IntentThread

目前我想安排一个PeriodicTask负责GcmNetworkManager将数据发送到服务器的。有没有更好的方法来做这一切?

0 投票
1 回答
132 浏览

android - 队列文件有时会损坏,导致在查看时出现 JSONSyntax 异常

我正在使用 Square Tape Queue ( https://github.com/square/tape/ ) 来存储数据。但是我有时会发现这个奇怪的文本,这会在从队列中读取时导致“JSONSyntaxException:预期的 BEGIN_OBJECT 但找到了字符串”。

两个木偶