2015-10-27 197 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