0

我的要求:检测并响应电源事件。我有一个允许用户设置响应的活动。UI 进入后台后,应用程序必须保持响应(通过用户操作,即“主页”,或通过例如接听电话)。

我的分析:

  1. 使用接受 ACTION_POWER_DISCONNECTED(和 ..CONNECTED)的 BroadcastReceiver
  2. 我已经在活动中实现了接收器,它按预期工作。它继续在后台工作一段时间,但最终由于正常的android生命周期而停止工作,即。操作系统会破坏它。
  3. (建议)为了保持接收器运行,我遵循此建议并将其作为服务,使用startForeground.
  4. (建议)因为它必须与 UI 交互,即通过接受对其设置的更改,它应该是一个绑定服务

预期的问题:

根据文档,当所有客户端解除绑定时,绑定服务将停止。我只有一个客户端(UI),它将在其onDestroy方法中解除绑定。这将在客户端被操作系统停止时调用,这最终会在正常的资源管理下发生。

当应用程序组件通过调用 bindService() 绑定到服务时,服务被“绑定”。绑定服务提供客户端-服务器接口,允许组件与服务交互、发送请求、获取结果,甚至通过进程间通信 (IPC) 跨进程执行此操作。绑定服务仅在另一个应用程序组件绑定到它时运行。多个组件可以一次绑定到服务,但是当所有组件都解除绑定时,服务将被销毁。

问题

  1. 这个分析正确吗?IE。作为正常操作系统管理的一部分,具有一个 UI 客户端的绑定服务最终会在客户端被销毁时被销毁吗?
  2. 如果是这样,我该怎么办?
  3. 任何其他提示请:)

作为一个假设被问到,因为设置绑定服务然后证明它按预期停止有相当多的工作。此外,即使它看起来有效,我也可能做错了。

4

1 回答 1

1

为什么不在清单中注册广播接收器?广播电源意图时,它将自动启动和调用。然后你不需要担心任何类型的“保持活动”处理(除非你需要做一些更长的处理,否则你不需要服务)

于 2012-12-18T22:11:04.763 回答