2011-12-28 43 views
1

我申請了Service。此服務啓動工作人員Thread,並且此線程需要一個指向Service實例的指針(它調用此服務的某些方法)。Android:如何獲得指向服務的指針?

現在我只是通過從ServiceonCreate()方法this指針我自己Runnable的構造,但它工作正常,直到我關閉我的應用程序。當應用程序重新啓動時,指針變得非常錯誤。我仍然無法弄清楚什麼是特別錯誤,但它似乎像指向我的服務實例的指針是一個奇怪的另一個服務實例的指針,並且指向我的Runnable也是錯誤的。

如果我我的應用程序,然後下次它工作正常,但重啓後,同樣的問題正在發生。

我懷疑我不能從服務的onCreate()方法傳遞this指針,但後來,我怎樣才能指針設置爲來自從onCreate()方法啓動線程我服務的實例嗎?

UPDATE:我剛纔發現我有完全一樣的singleton issueRunnable是一個單身人士。但我仍然無法找到任何好的解決方案,除非不在Android中使用單例。也許,有什麼建議?

回答

1

這個線程需要一個指向Service實例的指針(它調用了這個服務的一些方法)。

Java中沒有指針。 Java相當於「對象引用」。

,直到我關閉我的應用

有沒有這樣的概念,在Android的「關閉」的「應用程序」。

我仍然無法找出特別是錯的,但它似乎是指向我的服務的一個實例是一個指向服務的陌生另一個實例,並指向我的Runnable是錯了。

這絕對有可能的,如果你停止了原來Service和泄露的線程,然後重新啓動了Service。您可能已經完成了兩個線程,其中一個持有Service的已停用副本。

我該如何從onCreate()方法開始的線程獲取指向我的服務實例的指針?

這不是你的問題。你的問題,無論它是在別處。

+0

謝謝。對不起,錯誤的術語,但關於一個「應用程序」:在系統設置我可以去完全「應用程序管理」,我可以停止(不關閉,是的,但停止)我安裝的「應用程序」。我認爲合適的期限是活動?而且,我想回顧一下:一般來說,是否可以將'this'引用傳遞給'Service.onCreate()'中的某個東西? – 2011-12-28 21:26:43

+0

@dimonomid:「在系統設置中,我可以準確地進行」應用程序管理「,並且我可以停止(不關閉,是,但是停止)我安裝的」應用程序「。」 - 用戶通常不會這樣做。 「是否可以將此引用傳遞給Service.onCreate()中的某些內容?」 - 一般來說,是的。 – CommonsWare 2011-12-28 21:37:53

+0

我沒有說用戶應該這樣做,我只是試圖解釋爲什麼我使用「應用」術語。那麼,我發現了一個bug,再次感謝:有一個單例問題。我更新了我的問題,可否請您查看此更新並提出建議? – 2011-12-28 21:43:38

相關問題