1

我即将创建一个小 Android 程序,它每隔 5 分钟执行一个小任务。然后程序可以“停止”并等待 5 分钟并执行相同的小任务。

我称这个程序为“服务”

我应该能够通过另一个应用程序(或者它可以是相同的吗?)与程序通信(可以通过设置,如果可能的话,或者直接与服务交谈),它有一个小的 UI 来设置一些设置小活动。

现在我已经阅读了这些结构,但我不确定该使用哪一个:

  1. 服务
  2. 意向服务
  3. 报警管理器
  4. 处理程序

你能说明使用哪一个吗?

附言

我可以想象我对目标的描述有点难以理解。我认为最好将其与 Windows pc 上的图标托盘进行比较:它是一个程序/服务,它会自动启动并执行某些操作(在我的情况下,它会定期执行某些操作)并且您可以在使用时与它进行一些交互单击图标。所以我的程序必须在后台运行,但我必须能够与程序通信。

编辑也许一个更好的例子是:有一个程序/服务可以检查您的手机附近是否有新的 WiFi 网络可用。该服务会定期检查(我猜)是否存在新网络。但是,您可以通过设置关闭此行为(这就是 GUI 与服务交互的意思)

4

3 回答 3

2

在不确切知道您正在执行的任务是什么的情况下,我会说您需要使用它AlarmManager来管理任务的时间,并IntentService自行运行任务。

似乎您只是希望用户能够在服务上设置首选项?为此,您将使用一个,使用SharedPreferencesActivity保存设置,您的服务可以从中读取。

于 2013-08-06T18:09:00.627 回答
1

以下是它们之间的区别:

服务 - 永久运行(或直到由于资源问题而停止)。不会让手机保持清醒。没有计划,必须看到某些事件发生或被调用才能完成工作。

IntentService-运行足够长的时间来完成一项任务。可以排队几个任务。不会让手机保持清醒。未安排,但会排队请求。

AlarmManager - 必须存在于活动或服务的上下文中。会叫醒电话。按计划运行。

处理程序 - 当事件进入时运行。不让手机保持清醒。可以安排,但因为它不会唤醒手机,所以只能用于短期延迟。

您需要一个 AlarmManager 和一个服务。该服务将运行并允许您的警报在某个地方存在。闹钟本身将按计划被调用,并将唤醒手机以完成其任务。

于 2013-08-06T18:11:34.957 回答
1

最好的办法是同时使用AlarmManagerIntentService。这样你就可以启动警报,每 5 分钟或任何你向意图服务发送一个意图来做你想做的任何事情。

所有任务完成后,意图服务将自行停止,因此您不必担心管理它

于 2013-08-06T18:08:29.117 回答