2012-12-29 44 views
1

我想運行一個服務來收集加速度傳感器信息,並在手機睡眠或不應該停止活動(用於啓動服務)未運行。 我必須通過菜單活動向服務發送啓動和停止命令。
當前我在活動的相同過程中使用捆綁服務,但問題在於活動關閉後(即按下了返回鍵)它會立即關閉。服務不應該當手機正在睡覺,或活動(用於啓動服務)停止不運行

我想知道如果我使用一個單獨的進程,如果沒有綁定的活動(活動時閉合),它甚至會恢復。

如果不是,它的服務模式應該怎麼選擇呢?

回答

0

即使您的活動全部關閉,您的應用程序仍然可以正常工作,因爲您的服務仍然有效,直到您致電stopservice(系統將在您終止時自動重新啓動您的服務系統)。如果您的服務與活動進行復雜的交流,我認爲您應該使用遠程信使服務。在服務運行期間,您可以綁定到服務以在服務和活動之間發送和接收數據。 欲瞭解更多服務和溝通服務信息,您可以參考here

2

您可能正在尋找startService而不是bindService。

http://developer.android.com/reference/android/content/Context.html#startService%28android.content.Intent%29

然而,即使有startService,沒有保證的服務將保持「永遠」和「總是」上運行。

警告,下面的選項會消耗大量的電池。

您可以增加該服務將不會改變優先startforeground(需要通知)被停止的機會。

屏幕關閉時,保持服務「始終保持活動狀態」的唯一方法是使用帶有RTC_WAKEUP或ELAPSED_REALTIME_WAKEUP時間表的鬧鐘管理器。

更少的電池...

但是實際上講,沒有startForeground,只是使用普通的RTC或ELAPSED_REALTIME報警時間表,您的服務將運行的大部分時間。