首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓的FragmentTransaction.commit()方法线程安全吗?

安卓的FragmentTransaction.commit()方法线程安全吗?
EN

Stack Overflow用户
提问于 2012-05-08 00:37:32
回答 2查看 3.4K关注 0票数 2

我只是好奇是否必须在UI-Thread上调用它。根据文档,当将来有时间时,commit将在UI线程上运行。如果是这样,我可以在另一个线程上运行FragmentTransaction.commit()吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-08 01:05:59

不太明白你的意思。您可以始终使用任何其他线程向调用FragmentTransaction.commit()的UI线程发送消息。

但是,我不太理解为什么不在所有事务完成后立即调用commit。

我甚至认为,如果在延迟期间对片段或其依赖数据进行了任何更改,您甚至可能会遇到NullPointer错误,这会导致应用程序的状态与您立即调用提交时的状态不同。

同样在这种情况下,您应该调用fragmentManager.executePendingTransactions()来确保您的所有更改都将被执行,否则您可能会认为事务已经发生了--但实际上它们还没有发生。

票数 3
EN

Stack Overflow用户

发布于 2013-07-12 10:14:03

这个问题已经存在一年了,但我想要解决它,因为我怀疑这是一个很多人都会遇到的问题。

在非UI线程上使用FragmentTransactions,包括调用commit方法,是安全的,因为FragmentTransaction中发生的任何工作都不会直接操作UI。FragmentTransaction上的方法调用被简单地打包为要执行的工作的指令列表。

一旦调用了commit方法,该指令包就会被发送到UI线程进行处理。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10485764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档