我不应该使用FragmentManager的executePendingTransactions()(在主线程中)的情况是什么?

Lea*_*erd 13 android android-fragments

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

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

听起来像是一个非常神秘的警告.这些"回调和其他相关行为"将如何影响我的申请?从主线程调用此函数时,这会导致问题吗?我找不到任何具体的例子,所以我要求从人谁揭秘此警告的帮助:是什么的时候,我应该有些例子使用executePendingTransactions主线程,如果我这样做会发生什么可怕的事情?或者只要它在主线程中使用它总是安全的吗?

Sag*_*are 11

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

它以相同的方式指定:

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

  • 是的,我也读过那个部分,但是当它说"小心从哪里调用它"时,听起来它也指的是在UI线程中使用它.所以我的问题是:什么时候不应该在UI线程中使用`executePendingTransacations`?或者在任何情况下使用它是否安全,只要它在UI线程中? (4认同)
  • 是的,您可以在任何情况下使用它,只要它在UI线程中即可. (4认同)

ndo*_*ori 6

你不能从已执行的交易中调用它.你会得到"递归进入executePendingTransactions"

例如:替换片段,然后调用executePendingTranstactions.并在该片段的onCreate中替换另一个片段(使用activity的fragmentManager)