2016-09-16 64 views
0

我一直在考慮這個問題。如果一個服務在一個無限循環中使用了一些活動變量的引用,並且除非你明確地停止服務,否則這個服務不會被殺死,那麼這個活動仍然會像沒有正在運行的服務引用它的一些成員一樣簡單? 任何答案將不勝感激。Android服務不會無限期運行

+0

@Onik取決於被共享的變量。如果活動本身具有參考,則它無效。同樣的問題,如果一個非靜態類是共享的,因爲非靜態類有一個隱式引用的父。 –

回答

2

如果Activity有其他組件參考其變量,它可能會被終止 - 它可能無法被垃圾收集。因此,如果任何這些共享變量對Activity具有顯式或隱式引用,則您將擁有Activity的額外副本。這是內存泄漏(是的,它們可能在Java中)。這就是爲什麼在組件之間共享變量是一個壞主意。

+0

感謝您的快速和非常合理的答案!我會盡量讓我的服務不依賴於任何活動,以便無限期地運行。 – user1870797