2013-07-13 35 views
3

這應該有一個簡單的答案,但我還沒有弄清楚它是什麼。從Android偏好內部管理線程

我有一個Preference子類,它會產生一個新的Thread,只要Preference可見,它就需要運行。 Thread運行Looper,所以我可以使用Looper.quit()發信號通知它退出。

的問題是,凡在Preference類,我應該叫Looper.quit()

我試着重寫onPrepareForRemoval(),但這個功能似乎並沒有被調用。我不想給我的PreferenceActivity小組特殊的知識Preference;我希望Preference是獨立的。

+0

這是什麼樣的偏好?爲什麼它需要一個線程? – nickmartens1980

+0

可以並經常從偏好活動外改變的類型,並且需要更新其顯示。 –

+0

不能用broadcastReceiver或preferenceChangeListener來完成嗎?這些監聽器通常綁定到活動上下文,並在活動時被銷燬。 – nickmartens1980

回答

0

根據你的描述,它更容易和更清潔的這個使用廣播或preferenceChangeListener來實現。

發送廣播很簡單,只要在發送與意向自定義操作。在偏好設置中註冊接收器,你會沒事的。

它也與代碼的其餘部分分離。

+0

我無法控制外部變化。沒有通知,因此需要輪詢線程。 –

+0

你可以從活動派生這個線程,並使用廣播,這樣你就會有生命週期的控制,你並不需要在活動註冊您的喜好 你也可以讓活動實現接口和投上下文到具體類型。這將允許你綁定到一個特定的接口。它只要求首選項知道接口和實現它的活動。 我想到的第一個建議是清潔的,但我看不出有什麼其他簡單的解決方案 – nickmartens1980

+0

在兩種情況下做的,我知道不再被顯示的偏好時,所以我還是不知道什麼時候退出線程。 –