2015-10-27 143 views
0

We丢失了WearableListenerService生命周期。我在想,它会像一个正常的服务一样工作:当我摧毁我的移动/穿戴应用程序(在我的情况下),我想杀了这项服务。但是我注意到,当你销毁服务时,服务会再次创建,就像后面有一个“START_STICKY”一样。WearableListenerService生命周期

我阅读文档,它的写:The life-cycle of this service is managed by Android Wear.

我该怎么办呢?有没有办法正确地杀死这个服务,或者我应该让这个服务活着,让android穿着它的生命周期?

编辑:

我忘了说最重要的事情:过滤<action android:name="com.google.android.gms.wearable.BIND_LISTENER" />是一个触发听者的创建。

我最终做的是在该服务中使用布尔值来知道应用程序何时打开(background/foreground),所以我不执行任何会导致应用程序关闭时可能导致错误的动作(ui行动)。

回答

1

首先,它似乎只有当您的应用程序在前面时才会收到一定的回调(因为您说当你的应用程序在后台时你想“禁用”)。如果是这样,那么您就无需先使用该服务;您可以为您在应用程序启动时感兴趣的任何回调注册实时监听器,并在应用程序消失时取消注册。也就是说,WearableListenerService实际上是一种短期服务,它在框架启动时发生,当有相关更改或消息并调用它提供的适当回调时,并且在返回回调后不久,服务被销毁;这是任何通过绑定启动的服务的标准行为。向服务提供的方法添加一行日志语句,并监视您的日志,以查看在您不期望的情况下看到它开始时调用哪个回调;这应该给你一个线索,了解正在发生的事情。

0

你不应该担心这项服务的状态。一旦它完成工作,它会自我毁灭。如果这是相关的,你可以添加任何需要运行的清理代码到onDestroy()方法中。

+0

是的,我添加了日志,并注意到你在说什么。令我困扰的是以下情况:假设我们处理离线/在线模式(我们根据移动应用是否正在监听来显示UI),我会做一些事情,比如在OnConnected方法中发送配置消息,然后等待用定时器回复,如果没有回复,我可以告诉我已经离线了。但这意味着每次我的服务再次创建时,即使我知道我已经连接,它也会发送一条配置消息。那么我将如何处理那种行为呢? – krakig