Android:对来自服务中的AlarmManager的警报做出反应

时间:2014-08-21 18:46:25

标签: android service broadcastreceiver alarmmanager wakelock

我想定期获取天气信息以将其发送到智能手表 - 即使手机处于深度睡眠状态。 我的第一个方法是实现一个服务,它始终运行并使用带有postDelay()的Handler。这只有在电话醒着时才有效。

现在我已经实现了一个BroadcastReceiver,它可以响应来自AlarmManager的警报,这可以解决这个问题。

但是如何从BroadcastReceiver访问服务以运行实际的天气更新?

此Receiver自动实例化,因此我无法将服务的引用传递给接收方。我不能(也不应该)绑定服务,因为我读过,这不是好的做法。此外,我不知道在构建Receiver时服务是否已经启动。

我还读到,我不应该从这个Receiver运行AssyncTasks(获取天气数据在AssynTask中运行,但从不需要超过2秒)。怎么办呢?并且:如何在AssyncTask中使用wakeLock而不会在AssyncTask启动之前进入深度睡眠状态?

我希望你理解我的问题,有人可以帮助我。

非常感谢!

0 个答案:

没有答案