发送和接收意图之间的巨大延迟

Huge delay between sending and receiving an intent

编辑:

我在这里解释的问题与意图无关。 相反,使用我选择的方法旋转位图需要 300 毫秒。 现在我找到了在10-15ms内旋转的方法,所以问题解决了。


我的问题的一些背景信息:

现在问题:

服务运行一段时间后,慢慢恢复正常,我觉得有点奇怪...

我认为最好将日志的两个部分并排发布:

WidgetIntentService: onCreate() called.
WidgetIntentService: Service onStartCommand
WidgetIntentService: The service has started.
WidgetIntentService: Updates started.
WidgetIntentService: onDestroy() called.
WidgetIntentService: Heading: 330.0 degrees
WidgetIntentService: Heading: 338.0 degrees
WidgetIntentService: Heading: 342.0 degrees
WidgetIntentService: Heading: 340.0 degrees
WidgetIntentService: Heading: 334.0 degrees
WidgetIntentService: Heading: 329.0 degrees
WidgetIntentService: Heading: 331.0 degrees
WidgetProvider1: Rotation: 330.0
WidgetIntentService: Heading: 330.0 degrees
WidgetProvider1: Rotation: 338.0
WidgetIntentService: Heading: 327.0 degrees
WidgetProvider1: Rotation: 342.0
WidgetIntentService: Heading: 326.0 degrees
WidgetProvider1: Rotation: 340.0
WidgetIntentService: Heading: 322.0 degrees
WidgetProvider1: Rotation: 334.0
WidgetIntentService: Heading: 316.0 degrees

...

WidgetIntentService: Heading: 334.0 degrees
WidgetProvider1: Rotation: 334.0
WidgetIntentService: Heading: 335.0 degrees
WidgetProvider1: Rotation: 335.0
WidgetIntentService: Heading: 335.0 degrees
WidgetProvider1: Rotation: 335.0
WidgetIntentService: Heading: 336.0 degrees
WidgetProvider1: Rotation: 336.0

有时,直到我第二次启动服务时,这种延迟才会消失。 在这种情况下,日志是这样的:


...

WidgetIntentService: GPS stopped.
WidgetIntentService: Magnetometer stopped.
WidgetProvider1: Rotation: 293.0
WidgetProvider1: Rotation: 293.0
WidgetProvider1: Rotation: 294.0
WidgetProvider1: Rotation: 296.0
WidgetProvider1: Rotation: 299.0

我的理论是,android 缓冲了意图,并且所有这些意图一次一个地处理,直到小部件设法跟上。

有什么方法可以让我的 AppWidgetProvider 只接受最后收到的意图而忽略所有其他意图?

如果您对我如何以更好的方式做到这一点有任何想法,请告诉我!

这就是 IntentService 所做的 - 它对请求进行排队并在单个非 UI 线程上一次处理一个请求。如果您不想要这种行为,请不要使用 IntentService。使用服务并自行处理任何线程。