2013-07-13 33 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

在两种情况下做的,我知道不再被显示的偏好时,所以我还是不知道什么时候退出线程。 –