片段,setRetainInstance(true)和线程库

时间:2011-05-13 18:53:23

标签: android android-fragments

Here,Dianne表示,通过onRetainNonConfigurationInstance()保留对象的旧方法现在已经过时,因为您可以将Fragment实例保留在配置更改之上。

here,在片段的API演示中,它显示了在配置更改后如何使用此方法维护线程。

我看到在配置更改期间,当Fragment可能没有附加到任何活动并且线程完成它正在工作时,它可以调用wait()以便它不会尝试提供结果未附加活动。我觉得这非常有用,也是一种很好的方法来缓解Android方向变化带来的更多痛苦问题。

但是,如果您正在使用线程库(例如,使用线程执行程序的API库),您无法在所述线程上访问wait(),那么我们如何使用这个新的?对我们有利吗?

我们如何确保在未附加活动时不会传递邮件?

我一直在考虑一种方法,可能会在添加新活动时排队并传递消息,但我想打听你们,看看你们是否已经提出了一些解决方案。

另外,请注意,我已经查看了LoaderManager API,看起来好像是在显示Activity时需要加载的数据,但不适用于基于事件的事情,比如通过按钮登录等等。

1 个答案:

答案 0 :(得分:3)

您可以使用更高级别的并发实用程序(例如Latch)来解决此问题,您可以让所有线程等待,直到新的Activity被附加(就在它们尝试访问消息队列以提供结果之前) )。

附加活动后,您可以释放Latch,允许所有线程提供结果。