修改
我在这里解释的问题与意图无关。 相反,使用我选择的方法旋转位图需要300毫秒。 现在我找到了一种在10到15毫秒内旋转的方法,所以问题就解决了。
我的问题的一些背景:
现在出现问题:
服务运行一段时间后,它会慢慢恢复正常,我觉得有点奇怪......
我认为最好只将日志的两个部分张贴在彼此旁边来描述:
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只接受最后收到的意图并忽略所有其他意图?
如果您对我如何以更好的方式做到这一点有任何想法,请告诉我!
答案 0 :(得分:0)
这就是IntentService的作用 - 它将请求排队并在一个非UI线程上一次处理一个请求。如果您不想要这种行为,请不要使用IntentService。使用服务并自己处理任何线程。