0

我有一个警报管理器,它每分钟启动一个广播接收器,它运行一个具有最大优先级的线程。在那个线程中,我使用 Twitter4j.getUserTimeline(page) 从我用于消防部门的 Twitter 帐户(即呼叫信息)中获得了 60 条最新的推文。我的问题是我注意到 getUserTimeline 时不时出现明显的滞后。getUserTimeline 通常需要 4 秒或更少的时间,但有时即使在信号良好的区域和 wifi 上也需要几分钟。我在主应用程序/UI 中使用相同的代码调用 twitter4j.getUserTimeline,最大延迟只有 3 秒。

任何人都知道为什么会发生这种情况或如何解决?

4

1 回答 1

0

如果您正在启动一个每秒大约需要 4 秒的进程,那么您可能会在任何时间点运行 4 个或更多线程——所有线程都在做同样的事情。这些进程之间是否存在某种干扰 - 即:线程死锁?如果 Twitter4j.getUserTimeline 函数不能保证线程安全,你最好启动一个后台服务(将它设置为在前台运行,这样 Android 就不会杀死它),然后让它在循环中运行,不断调用getUserTimeline 函数。然后,它可以在检测到重大事件时触发要启动的活动。

于 2012-07-31T00:49:11.547 回答