2014-03-25 44 views
0

我想创建一个Android应用程序,它下面的一个任务可配置的Android应用程序:建议的执行频繁

  1. 在安装它为用户提供了其中,他们被允许进入他们的Gmail ID的UI /密码和推特ID /密码。
  2. 然后用户点击一个按钮,该按钮启动一个在后台运行的服务来检查他的gmail帐户是否有新的邮件到达。即使将UI(活动)从前台移除后,此服务也应该保持永久运行。
  3. 如果到达的电子邮件是以指定的格式,它开始从他的Twitter帐户推文。
  4. 推文基于邮件的内容,可能很多。这些推文是在一定的时间间隔后进行的,比如说3分钟。因此,推文任务可能需要几小时才能完成(电话休眠/重启之间)
  5. 服务/后台任务必须是可停止的,并在用户决定更改他的gmail/twitter凭证时再次恢复。

我已经实现了为新邮件到达检查gmail收件箱的服务(意图服务更一般)。但一些它是如何在一段时间后重新启动手机而死亡的。我只想要这项服务:

  1. 要在手机重新启动和长时间间隔后继续运行。总之,永远。

  2. 在发生电话重启的情况下继续发送任务。

所以我的问题是:

  1. 如何创建这样永远运行服务?我搜索了其他类似的问题,并找到了两个解决方案 - AlarmManager和TimerTask。我不知道AlarmManager是否会一直重复启动服务,以防止它被杀死。我尝试了TimerTask,但是一旦手机重新启动,它就不会恢复。也许我可以订购我的服务到一个系统服务,它会在电话重启时自动恢复。
  2. 如果手机重新启动,为推特创建的线程不能停止。
  3. 如果用户从UI中更改该服务,该服务必须允许自己停止并用新凭据继续。

另外我想知道IntentService是否适合我的情况,或者一个简单的Service就足够了? 我对Android开发相对较新,希望更有经验的人分享他们对我的需求的看法。

回答

0
  1. 您当然可以订阅指示手机已启动的事件(android.intent.action.BOOT_COMPLETED)。 AlarmManager也可以定期重新启动服务,但不要过度。一个TimerTask将无法​​正常工作,因为如果您的应用程序被杀害,没有什么可以运行该任务。
  2. 同样的事情。只需在Service中完成这项工作即可。

如果你有一个IntentService实现工作,这不是一个坏的选择,因为它将工作从主线程中卸载。