似乎有两种方法可以执行后台任务。我的用例是让我的应用程序每隔x分钟读取一次数据馈送,而不管我的gui是否正在运行,而不管手机是否正在睡眠。如何安排后台任务
我使用alarmmanager安排意图相匹配的广播接收器。在onRecieve方法中,我启动一个服务(startService),该服务产生一个AsyncTask。任务提取数据并存储它,然后stopSelf()服务。
在onRecieve方法我AQUIRE一个PARTIAL_WAKE_LOCK,启动服务之前,只是在服务调用stopSelf()之前,我再次释放。
这真的是最好的方法吗?我甚至需要在这种情况下的服务?
我遇到这种设置,其中设置适用于小时,然后突然停止,这使得它很难调试奇怪的行为。
有没有人有一个简单的万无一失的方法,才达到同样的目的?
aha!所以我无法在播放器中启动我的asynctask?即使我在onrecieve中获得了wakelock,并在asynctask完成时释放它? 感谢您提供的信息,我想我需要为我的闹钟提供更多的帮助 – Wilken 2010-01-14 15:23:29
“所以我无法在播放器中启动我的asynctask?”我不这么认为,但我还没有尝试过。AsyncTask拥有自己的线程池,它可能*可以安全地从BroadcastReceiver运行AsyncTask。 – CommonsWare 2010-01-14 16:01:34
感谢使用IntentService的想法,不知道这一点。现在我已经放弃了我的服务和AsyncTask。更优雅。 – Wilken 2010-01-14 18:15:57