有一些较长的处理需要完成,所以我把它放在一个服务中。该 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/