从Android首选项内部管理线程

从Android首选项内部管理线程,android,android-preferences,Android,Android Preferences,这应该有一个简单的答案,但我还没有弄明白它是什么 我有一个首选项子类,它生成一个新的线程,只要首选项可见,它就需要运行。线程运行一个活套,因此我可以使用Looper.quit()发出退出信号 问题是,在首选项类中,我应该在哪里调用Looper.quit() 我已尝试在prepareforremoval()上重写,,但似乎未调用此函数。我不想让我的首选项活动子类专门了解此首选项;我希望首选项是自包含的。根据您的描述,使用广播或preferenceChangeListener实现此功能更容易、更简洁

这应该有一个简单的答案,但我还没有弄明白它是什么

我有一个
首选项
子类,它生成一个新的
线程
,只要
首选项
可见,它就需要运行。
线程运行一个
活套
,因此我可以使用
Looper.quit()发出退出信号

问题是,在
首选项
类中,我应该在哪里调用
Looper.quit()


我已尝试在prepareforremoval()上重写
,但似乎未调用此函数。我不想让我的
首选项活动
子类专门了解此
首选项
;我希望
首选项
是自包含的。

根据您的描述,使用广播或preferenceChangeListener实现此功能更容易、更简洁

发送广播很容易,只需通过自定义操作发送意图即可。在首选项中注册该操作的接收者,您就可以了


它还与代码的其余部分解耦。

这是什么样的首选项?为什么它需要一个线程?这种线程可以而且经常从首选项活动外部更改,并且需要更新其显示。这难道不能通过broadcastReceiver或preferenceChangeListener实现吗?这些侦听器通常绑定到活动上下文,当活动被激活时将被销毁。我无法控制外部更改。没有通知,因此需要轮询线程。您可以从“活动”生成此线程并使用广播,这样您就可以进行生命周期控制,并且不需要在“活动”中注册首选项。您还可以让“活动”实现接口并将上下文强制转换为该特定类型。这将允许您绑定到特定接口。它只要求首选项知道接口和实现接口的活动。我认为第一个建议更简洁,但我看不到其他简单的解决方案。在这两种情况下,我都不知道何时不再显示首选项,因此我仍然不知道何时退出线程。您可以在首选项活动的onpause上退出线程。如果这是没有选择的话,恐怕我看不到另一个解决方案。