1

我想运行一项服务来收集加速度计传感器信息,并且当手机处于睡眠状态或活动(用于启动服务)未运行时它不应该停止。我必须从菜单活动向服务发送启动和停止命令。
目前我在活动的同一过程中使用捆绑服务,但问题是一旦活动关闭(按下回车键)它就会关闭。

我想知道我是否使用单独的进程,即使没有捆绑的活动(当活动关闭时)它也会恢复。

如果不是,我应该选择哪种服务模式?

4

2 回答 2

2

您可能正在寻找 startService 而不是 bindService。

http://developer.android.com/reference/android/content/Context.html#startService%28android.content.Intent%29

但是,即使使用 startService,也不能保证服务将“永远”和“始终”保持运行。

警告,以下选项会消耗大量电池。

您可以通过将优先级更改为 startforeground(需要通知)来增加服务不会停止的机会。

当屏幕关闭时,保持服务“始终处于活动状态”的唯一方法是将警报管理器与 RTC_WAKEUP 或 ELAPSED_REALTIME_WAKEUP 时间表一起使用。

电池少...

然而,实际上,如果没有 startForeground 并且只使用正常的 RTC 或 ELAPSED_REALTIME 警报计划,您的服务将在大部分时间运行。

于 2012-12-29T02:02:02.123 回答
0

您可以在与您的应用程序相同的进程中创建一个服务,即使您的活动全部关闭,应用程序仍然可以工作,因为您的服务仍然存在,直到您调用 stopservice (系统将在被系统杀死时自动重新启动您的服务)。如果您的服务与活动执行复杂的通信,我认为您应该使用远程信使服务。在服务运行期间,您可以绑定到服务以在服务和活动之间发送和接收数据。有关服务和与服务通信的更多信息,您可以参考这里

于 2012-12-29T02:01:38.177 回答