似乎有几种方法可以执行后台任务.我的用法是让我的应用每隔x分钟获取一次数据馈送,无论我的gui是否正在运行,无论手机是否正在睡眠.
我使用闹钟管理器来安排与广播接收器匹配的意图.在onRecieve方法中,我启动一个服务(startService),它产生一个AsyncTask.任务获取数据并存储它,然后stopSelf()服务.
在onRecieve方法中,我在启动服务之前获取PARTIAL_WAKE_LOCK,并且在调用服务中的stopSelf()之前,我再次释放它.
这真的是最好的方法吗?在这种情况下我甚至需要这项服务吗?
我在这种设置中遇到了奇怪的行为,其中设置工作了几个小时然后突然停止,这使得调试非常困难.
有没有人有一个简单的万无一失的方法来达到同样的目的?
我使用闹钟管理器来安排与广播接收器匹配的意图.在onRecieve方法中,我启动一个服务(startService),它产生一个AsyncTask.任务获取数据并存储它,然后stopSelf()服务.
我建议使用一个IntentService而不是AsyncTask/ stopSelf()pattern,但否则这似乎是合理的.
在onRecieve方法中,我在启动服务之前获取PARTIAL_WAKE_LOCK,并且在调用服务中的stopSelf()之前,我再次释放它.
那讲得通.我在WakefulIntentService开源组件中做了很多相同的事情.
这真的是最好的方法吗?
你当然看起来很亲密.
在这种情况下我甚至需要这项服务吗?
如果您在预定的基础上需要做的事情只保证一秒左右,那么你可以在BroadcastReceiver.否则,您需要在后台线程上完成工作,并且BroadcastReceivers不能分叉后台线程.
| 归档时间: |
|
| 查看次数: |
2683 次 |
| 最近记录: |