2012-07-23 73 views
1

我已經給出了多種解決方案,我認爲這是一種常見的情況。不幸的是,似乎沒有人按預期工作。Android服務沒有像預期的那樣開始/停止

我創建了一個非常簡單的android遊戲。用戶可以邀請朋友玩遊戲,並且在遊戲生命週期中有一些活動被路由通過。所有轉向和數據都存儲在通過Web服務公開數據的遠程服務器中。每次發送邀請,或者對手輪到他們時,都會通過服務提示用戶輪到他們。

服務提示用戶使用標準的android通知告訴他們輪到他們了。我不希望該服務在用戶查看遊戲時輪詢Web服務或顯示通知(他們已經知道它是否正在轉向)。

我試過以下解決方案沒有任何成功。

  1. 在主要活動的onPause方法中啓動服務,並在主要活動的onResume方法中停止該服務。

    • 問題 - 每當用戶離開另一個活動時服務啓動。用戶可能會寫一些東西或創建一個邀請,並提示他們輪到他們。
  2. 將每個活動綁定到服務並在所有活動的onPause/onResume方法中設置一個布爾(運行)標誌。

    • 問題 - 這似乎合乎邏輯,但由於某種原因,服務從未提出通知。這可能是用戶錯誤,但我不確定這是否是正確的解決方案。
  3. 在所有活動的onPause方法中啓動服務,並停止所有活動的onResume方法中的服務。

    • 問題 - 基於我在屏幕上展示的服務狀態按預期工作的狀態。問題在於服務關閉時用戶會收到通知。顯然我的敬酒是誤導。

任何幫助,非常感謝。示例代碼不是必需的,但是如果解決方案比上述概念更加複雜,那麼將不勝感激。

謝謝。

回答

1

請勿使用服務,使用Google Cloud Messaging並在廣播接收器中檢查遊戲狀態,然後決定是否顯示通知。輪詢通常很糟糕,不必要地使用數據和電池。

+0

謝謝。我希望很久以前提出這個建議。我現在就開始研究。 – alockrem 2012-07-23 21:47:53

相關問題