android - 如何自行停止使用 BIND_AUTO_CREATE 启动的服务?

标签 android service lifecycle

有一些较长的处理需要完成,所以我把它放在一个服务中。该 Activity 必须能够连接到服务,向用户显示服务的当前结果。因此,我使用 start Service 启动服务,然后调用 bind Service(使用 BIND_AUTO_CREATE),就像在来自 http://developer.android.com/reference/android/app/Service.html# 的 LocalService 中一样。 服务生命周期。我希望它一直运行到它的工作完成,然后自动停止,即使客户端仍然连接到它。 (或确定要取消绑定(bind)的客户端)有什么方法可以用示例 LocalService 来实现吗?

我正在考虑将处理程序传递给服务,以便它可以将消息发送回 Activity ,但我不希望 Activity 泄露。我刚刚习惯了服务,所以我可能误用了一些东西。

编辑:工作负载由多个线程组成,同步并并行运行,所以我想这不是意向服务的理想选择。一些数据分析是在后台服务中完成的,当用户重新启动启动该服务的 Activity 时,它应该根据后台服务计算的当前值显示一些图形。所有后台处理都是在开始时触发的,以后只需要在 Activity 连接到它时进行检查。 Android 应该无法停止该服务。当作业完成时,服务应该能够终止,即使 Activity 连接到它也是如此。

最佳答案

我刚刚用服务记录了一个回调。如果 Activity 未连接到服务,它将回调设置为空。在此回调中,我调用了 stopService() ,然后调用了 Activity 的 finish() 。我不确定这是最好的方法,但对我来说效果很好。

关于android - 如何自行停止使用 BIND_AUTO_CREATE 启动的服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22812591/

相关文章:

Android - 无法实例化一个或多个类

.net - COM+ 组件由 C# 中的 Windows 服务托管,用于控制外部设备

java - Java应用程序的生命周期

Android fragment 生命周期 onStop、onDestroyView、onDestroy 和 onDetach

Android Activity 生命周期

android - 用于错误监控的 MixPanel

java - 不出现通知

java - 使用共享首选项仅保存 1 个 int

c# - 如何将 WCF 服务添加到现有的 winforms 应用程序?

java - 防止停止android服务