我应该为连续的后台任务实现哪种服务?

时间:2013-09-23 13:35:27

标签: android android-service

我一直在检查谷歌的文档已有几天了,但我不知道该怎么做。

我头脑中的想法是创建一个在后台(永远)运行的服务,即使设备重启等等(例如,WhatsApp)。这项服务应该在周四每隔30分钟通过互联网(例如)。

但是,我不确定是否要创建经典服务,使用BroadCastReceiver等等。

我想要解释一下我的搜索重点。 我应该使用哪种服务来执行永无止境的任务?

1 个答案:

答案 0 :(得分:4)

没有人想要一个在后台永远运行的应用程序。你想要一个定期启动的应用程序(在后台),做到这一点,并再次睡觉。

此外,在Android中,没有任何东西可以“永远”运行。生命周期由Android操作系统处理,这意味着如果它需要资源,它可以杀死您的应用程序。

所以你可以做两件事:

  • BroadcastReceiver + Service:BR听取Android引导Intent,然后启动可能无限期运行的服务(使用startService)。
  • AlarmManager + BroadcastReceiver(+ Service):按照您希望推出BR的指定时间间隔创建闹钟。然后,无线电通信局可以启动执行繁重工作的Service。服务完成后应该自杀!
不能使用

IntentService,因为当没有更多任务时它会自杀 BroadcastReceived不能单独使用,因为它只能存活几秒钟(10秒)

<强> TL;博士

不要制作永久运行的服务。创建一个Service完成它的任务并在完成后自杀。然后定期启动此Service