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