在单线程管理器类的UI线程上发布

问题描述:

我有一个从Activities(UI线程)调用的单例管理器类,然后它在不同的线程(Network)上运行,并且在它结束时应该调用一个回调方法呼叫活动。在单线程管理器类的UI线程上发布

我想知道什么是在UI线程上调用回调方法的最佳方式。 我一个熟悉的选项(参见http://android-developers.blogspot.co.il/2009/05/painless-threading.html

所以我在想两个选项:

第一: 调用活动将实现与getActivity()方法的接口。该方法将用于调用Activity.runOnUiThread(Runnable)。

第二个: MainApplication位于管理单例中,它将传递一个属于UI线程的Handler实例。

什么是更好的选择? 我也很高兴听到任何其他建议

不管你选择什么选项,你必须记住,活动有一定的生命周期,而不像你的单身人士课程可以完成或移动到后台。鉴于此,您应该再次考虑singleton是否真的是这里最好的选择:如果它需要与活动交互,那么活动应该管理其生命周期。如果它不依赖于任何特定的活动,您可能希望将其作为服务并发送广播以通知进度等。

您究竟想要做什么?

+0

经理提供服务,技术上任何人都可以称之为服务。 此外,作为一个单身人士,只要应用程序没有损坏,它就会一直存在。 这些活动在管理者注册和取消注册为听众时管理其生命周期。 – dors 2012-08-03 09:09:40

+0

在这种情况下,调用活动接口方法应该是更好的主意。然后该活动可以决定究竟要做什么以及是否需要在UI线程上运行某些东西。 – 2012-08-03 09:12:23

+0

在我的应用程序中,该活动仅在UI线程上运行操作。所有需要不同线程的操作都由管理员运行。所以让活动决定这些事情没有任何好处。 考虑到这一点,你是否仍然认为使用getActivity()选项更好? – dors 2012-08-03 09:41:55