2012-04-28 41 views
6

所以我有一個後臺服務運行。現在,如果用戶退出該活動,該服務仍將繼續運行,對嗎? 現在當用戶重新啓動應用程序時,我想訪問後臺服務並調用一些方法。我如何訪問後臺服務的實例?獲取後臺服務實例

謝謝!

回答

6

這對我來說非常有用!但是如果您有其他選擇,請不要使用它,因爲公共靜態成員不是很好,除非它們是最終的。 您可以在服務中創建一個具有公共範圍的靜態變量。

public static BackgroundService bs; 
@Override 
public void onCreate(){ 
    bs=this;} 

然後用'this'初始化該變量,使其成爲當前正在運行的服務的引用。隨時將其用作您活動的參考。

+0

聽起來不錯!今天會試一試,看看它是否有效!謝謝! – Ishwar 2012-04-29 02:41:22

+0

好吧,所以我做了你說的,但我得到了NullPointerException。我的代碼:http://pastebin.com/UT9Rcyi4 – Ishwar 2012-04-29 05:30:04

+1

這是因爲根據(stackoverflow.com/questions/5085190/...)對startService的調用是異步的。所以你的服務還沒有開始!只要在一些開始你的服務其他活動,並從那裏開始使用startActivity()開始您的活動,它正在爲我工​​作。 – rahulserver 2012-04-29 08:53:21

0

如果您想與後臺服務進行通信。不能使用粘結劑機制,這個你可以訪問此網站:android develop

有一個實例講述如何使用後臺服務

非常感謝

1

如果服務退出活動後繼續運行取決於你如何開始活動。 (在文檔startService()/ bindService()中閱讀此內容) 如果您的服務仍在運行,那麼調用startService()/ bindService()會將您連接到「舊」服務。

+1

所以你的意思是如果服務在後臺運行,啓動或綁定服務不會產生新的服務實例。相反,會拿舊的? – Ishwar 2012-04-28 13:55:15