片段,setRetainInstance(true)和线程库

syn*_*nic 41 android android-fragments

在这里,Dianne说,保留对象的旧方法onRetainNonConfigurationInstance()现在已经过时,因为您可以保留Fragment实例而不是配置更改.

在这里,在片段的API演示,它展示了如何使用这种方法进行配置更改后保持线程.

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

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

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

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

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

Sub*_*ied 4

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

一旦 Activity 被附加,您就可以释放 Latch,允许所有线程传递它们的结果。