0

我正在执行一项需要很长时间(离线)的活动。我正在我的应用程序中发送和接收(阅读)短信,为此我使用了一个倒计时计时器类,它有一个监听器onTick()onFinish(). 在onTick()侦听器中,我正在检查是否有任何新消息,如果预期消息中有任何新消息,它将停止计时器并将其显示在我的屏幕上。一切似乎都还好。当我离开并重新进入应用程序或更改方向时会出现问题。

在处理网络调用时robospice,会处理所有这些活动转换问题。所以我想使用robospice. 我robospicegithub. 但是LoadDataFromNetwork()没有处理任何听众。它只是执行一项长期任务。

如果我已将离线示例与我的问题相关联,那么我要做的就是在我的侦听器中调用该spiceManager.execute()方法,然后它将从我的收件箱中读取消息并检查是否有任何所需类型的消息并将其返回到. 但这不是我想要的。我希望 robospice 调节完整的计时器类。onTick()loadDataFromNetwork()requestListeners

只有当我阅读特定所需的消息时,我才知道如何触发robospice requestlisteners,因为阅读活动是在计时器ontick()侦听器中执行的。

robospice 真的可以这样做吗?如果不是,请给我一个解决方案来处理第一段中提到的实际问题。

4

1 回答 1

0

如果您改用 RoboSpice,那么似乎不需要 a CountDownTimer,您可以在loadDataFromNetwork. 这将在工作线程中执行,Service因此阻塞该线程不会影响您的 UI。

所以一个简单的带睡眠的 for 循环应该得到相同的结果。

需要注意的一件事是您SpiceService配置为使用的线程数。如果这是一个运行时间很长的任务并且您使用的是默认的单个工作线程,那么我相信您会阻止后续SpiceRequests的 . 如果您尚未对该类进行子SpiceService类化,则可以这样做并覆盖该getThreadCount方法以返回大于 1 的 int。

于 2014-06-10T10:35:47.213 回答