2013-08-06 15 views
1

我即将创建一个小程序,每执行一个小任务5分钟。 然后程序可以'停止'并等待5分钟,然后执行相同的小任务。我应该使用哪种对象进行每5分钟一次的检查程序?

我把这个程序的“服务”

我应该能够与程序(可以通过,如果这是可能的,或者直接对话服务的设置)通过其他应用程序进行通信(或者可以吧是一样的?),它有一个小的UI来为小活动设置一些设置。

现在我已经知道了这些结构,我不知道该使用哪一个:

  1. 服务
  2. IntentService
  3. AlarmManager
  4. 处理器

灿你是否会对使用它的人发光?

ps

我可以想象我的目标描述有点难以理解。最好的事情来比较它,我认为是在Windows PC上的图标托盘:它是一个程序/服务,自动启动,并做一些事情(在我的情况下,它定期做的事情),你可以有一些与它的互动点击图标。所以我的程序必须在后台运行,但我必须能够与程序进行通信。

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

回答

1

最好的办法是同时使用AlarmManagerIntentService。这样你就可以开始闹钟了,每5分钟或者任何你发送意向服务的任何人做任何你想做的事情。

所以你不要担心管理IT

+0

是否有一种方法可以为其中的一个GUI设置一些设置/参数? – Michel

+0

服务没有UI,这是一个活动的目的。创建一些内容来设置您的设置(PreferenceActivity/PreferenceFragment)并将设置保存在共享首选项中。您可以在服务中访问的那些首选项 – tyczj

2

不正是你正在执行的任务都知道这样做的目的服务将停止本身一旦所有任务都做了,我会说,你需要使用AlarmManager来管理任务的时间,IntentService自己运行任务。

好像你只是想让用户能够设置服务的偏好?您将使用Activity,使用SharedPreferences保存您的服务可读取的设置。

+0

AlarmManager是一种程序,还是我在Android应用程序中创建的对象。 (和IntentService的相同问题;-)) – Michel

+0

您使用自己的服务扩展IntentService。 AlarmManager是通过使用'Context.getSystemService(Context.ALARM_SERVICE)'从Android获得的对象,然后使用该对象来设置警报。 – Ralgha

1

以下是它们之间的区别:

服务永久运行(或直到因资源停止)。不要让手机保持清醒状态。不预定,必须看到一些事件发生或被调用才能工作。

IntentService-足够长的时间执行任务。可以排队几个任务。不要让手机保持清醒状态。没有安排,但排队请求。

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

处理程序在事件进入时运行。不会让手机保持清醒状态。可以预定,但因为它不会唤醒手机应该只用于短期延迟。

您需要一个AlarmManager和一个服务。该服务将运行并允许您的闹钟在某处生活。警报本身将按计划进行呼叫,并唤醒电话以完成其任务。

+0

“唤醒电话”是什么意思?如果我将手机设置为“振动”而不是“铃声”,或者在我的服务关闭WiFi中,然后“唤醒电话”? – Michel

+0

当你的屏幕关闭时,手机已经睡着了。应用程序不运行,活动不运行,服务不运行。有两种方法可以规避这种情况。一个是采取唤醒锁 - 一个唤醒锁可以强制屏幕打开或只是CPU(以允许您的应用程序运行)。另一种是在接收事件的BroadcastReceiver(如闹钟)中存在代码 - 即使手机处于睡眠状态,该代码也会运行。 –

相关问题