建议经常执行任务的可配置Android应用程序

时间:2014-03-25 02:18:22

标签: android service android-service

我正在尝试创建一个执行以下操作的Android应用程序:

  1. 在安装时,它为用户提供了一个UI,允许他们输入他们的gmail ID /密码和twitter id /密码。
  2. 然后,用户单击一个按钮,该按钮启动在后台运行的服务,以检查他的Gmail帐户是否有新邮件到达。即使从前台删除UI(活动),此服务也应该永远保持运行。
  3. 如果收到的电子邮件是指定格式,则会从其Twitter帐户开始发送推文。
  4. 推文基于邮件内容,可能很多。这些推文经过一段时间后,比如3分钟。因此,推文任务可能需要数小时才能完成。(手机之间有睡眠/重启。)
  5. 如果用户决定更改他的gmail / twitter凭据,则服务/后台任务必须是可停止的并再次恢复。
  6. 我已经实现了服务(Intent服务更通用),它会检查gmail收件箱中是否有新邮件到达。但是有些时候以及手机重启后它会被杀死。我只想要这项服务:

    1. 在电话重启后以及经过很长一段时间后继续运行。简而言之。

    2. 如果手机重新启动,则会继续推文。

    3. 所以我的问题是:

      1. 如何创建永久运行的服务?我搜索了SO以寻找其他类似的问题,并找到了两个解决方案 - AlarmManager和TimerTask。我不确定AlarmManager是否会继续一次又一次地启动服务以防它被杀死。我试过TimerTask但是一旦手机重新启动它就不会恢复。也许我可以将我的服务订阅到一个系统服务,该服务将在电话重启时自动恢复。
      2. 如果重新启动手机,则不得停止为推文创建的主题。
      3. 如果用户从UI更改了该服务,该服务必须允许自身停止并使用新凭据恢复。
      4. 另外我想知道IntentService是否适用于我的情况或简单的服务就足够了? 我对Android开发比较陌生,期望更有经验的人分享他们与我的要求相关的观点。

1 个答案:

答案 0 :(得分:0)

  1. 您当然可以订阅表示手机已启动的事件(android.intent.action.BOOT_COMPLETED)。 AlarmManager也可以定期重启服务,但不要过度使用。 TimerTask将无法正常运行,就好像您的应用程序被杀死一样,没有任何东西可以运行该任务。
  2. 同样的事情。只需在Service
  3. 中完成这项工作

    如果你有一个IntentService实现工作,那么它不是一个糟糕的选择,因为它会卸载主线程的工作。