Android:用于后台处理的组件,必须手动启动

时间:2012-02-02 13:30:44

标签: android service android-activity cordova

我需要你的想法。我正在寻找的是在后台运行的任务或服务(没有用户界面),能够满足以下要求:

  • 它不应该永久运行,只有在它被调用时才会运行。有两种可能的呼叫者:
    1. gui / touch应用程序。用户可以输入数据,应用程序将此数据传递给数据获取持久的后台服务。这可以随时发生,随机
    2. Android操作系统,定期。也许AlarmManager是一种合适的方法。当定期调用服务时(例如每30秒),它应该处理步骤1中存储的数据。处理完成后,它应该自行停止以节省电池。

换句话说: 用户不会触发处理,用户只负责输入。然后AlarmManager定期触发处理。

Android服务类是否适合这种情况,还是有更好的方法?

如果是,我在理解服务类时遇到问题。根据文档,它没有自己的进程,而是在宿主进程中运行。这会导致问题吗?所以有时候,phonegap插件(传递数据)是主机进程,有时警报代码是主机进程,或者我错了?我的意思是该服务没有主要应用程序,而是可以从不同位置调用的独立内容。

由于

谢谢

2 个答案:

答案 0 :(得分:2)

这里的服务是合适的。

您可以安排AlarmManager定期调用您的服务,并让您的UI活动向其推送数据,并可选择唤醒服务以处理数据。

服务在主机进程中运行,并且将在UI线程中运行,除非您创建另一个线程。 IntentService课程可以帮助您解决这个问题。 它允许您解雇由工作线程中的服务处理的意图。

意图在IntentService类中排队,并由IntentService管理的单个工作线程依次处理。

在您的情况下,您可以让AlarmManager触发将由您的服务在工作线程中处理的Intent。

答案 1 :(得分:2)

请注意,一旦手机重新启动,AlarmManager会丢失所有设置的闹钟,再次初始化闹钟通常会创建一个派生自BroadcastReceiver的OnBootReceiver,以便在手机重启时收到通知。那么你将不得不再次设置警报。