41

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

在这里,在片段的 API Demos 中,它展示了如何在配置更改后使用这种方法来维护线程。

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

但是,如果您使用的是线程库(例如,使用线程执行器的 API 库),而您无法访问wait()所述线程,我们如何利用这个新功能来发挥我们的优势?

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

我一直在考虑一种方法来排队消息并在附加新活动时传递它们,但我想联系你们,看看你们是否已经提出了一些解决方案。

另外,请注意,我已经查看了 LoaderManager API,它似乎适用于显示 Activity 时需要加载的数据,但不适用于基于事件的某些东西,例如通过按钮登录等。

4

1 回答 1

4

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

连接 Activity 后,您可以释放 Latch,允许所有线程传递它们的结果。

于 2011-05-23T08:56:06.397 回答