我想运行一项服务来收集加速度计传感器信息,并且当手机处于睡眠状态或活动(用于启动服务)未运行时它不应该停止。我必须从菜单活动向服务发送启动和停止命令。
目前我在活动的同一过程中使用捆绑服务,但问题是一旦活动关闭(按下回车键)它就会关闭。
我想知道我是否使用单独的进程,即使没有捆绑的活动(当活动关闭时)它也会恢复。
如果不是,我应该选择哪种服务模式?
您可能正在寻找 startService 而不是 bindService。
但是,即使使用 startService,也不能保证服务将“永远”和“始终”保持运行。
警告,以下选项会消耗大量电池。
您可以通过将优先级更改为 startforeground(需要通知)来增加服务不会停止的机会。
当屏幕关闭时,保持服务“始终处于活动状态”的唯一方法是将警报管理器与 RTC_WAKEUP 或 ELAPSED_REALTIME_WAKEUP 时间表一起使用。
电池少...
然而,实际上,如果没有 startForeground 并且只使用正常的 RTC 或 ELAPSED_REALTIME 警报计划,您的服务将在大部分时间运行。
您可以在与您的应用程序相同的进程中创建一个服务,即使您的活动全部关闭,应用程序仍然可以工作,因为您的服务仍然存在,直到您调用 stopservice (系统将在被系统杀死时自动重新启动您的服务)。如果您的服务与活动执行复杂的通信,我认为您应该使用远程信使服务。在服务运行期间,您可以绑定到服务以在服务和活动之间发送和接收数据。有关服务和与服务通信的更多信息,您可以参考这里