13

我正在学习如何使用片段,到目前为止我遇到了很多小问题。FragmentManager的executePendingTransactions方法看起来可能有一些自己的方法,特别是因为官方 Android 文档中的描述中的这个注释:

如果您想立即执行任何此类挂起的操作,您可以调用此函数(仅从主线程)来执行此操作。请注意,所有回调和其他相关行为都将在此调用中完成,因此请注意从何处调用它。 http://developer.android.com/reference/android/app/FragmentManager.html#executePendingTransactions()

对我来说听起来像是一个非常神秘的警告。这些“回调和其他相关行为”将如何影响我的应用程序?从主线程调用此函数时会导致问题吗?我找不到任何具体的例子,所以我向任何揭开这个警告的神秘面纱的人寻求帮助:什么是我不应该在主线程中使用的例子,如果executePendingTransactions这样做会发生什么可怕的事情?还是只要它在主线程中就可以安全使用

4

2 回答 2

11

当您在 UI 线程以外的线程中时,不应调用此方法。

它在同一行中指定:

如果您想立即执行任何此类挂起的操作,您可以调用此函数(仅从主线程)来执行此操作。

于 2013-04-27T15:03:07.297 回答
6

您不能从已执行的事务中调用它。你会得到“recursive entry to executePendingTransactions”

举个例子:你替换一个片段,然后调用 executePendingTranstactions。并在该片段的 onCreate 中替换另一个片段(使用活动的片段管理器)

于 2014-06-22T14:46:46.247 回答