Android commitAllowingStateLoss和commitNow 、commit的区别
时间: 2023-10-15 19:27:02 浏览: 272
在Vuex使用dispatch和commit来调用mutations的区别详解
这三个方法都是用于提交 FragmentTransaction 的,但是它们有一些区别。
1. commit
commit() 方法是将 FragmentTransaction 添加到 Fragment 管理器的事务队列中,然后在下一次执行该队列时执行。如果你立即想要执行事务,可以调用 executePendingTransactions() 方法。
2. commitAllowingStateLoss
commitAllowingStateLoss() 方法与 commit() 方法非常相似,但是它允许在 Activity 状态保存时提交 FragmentTransaction。这意味着如果 Activity 在提交事务时发生了销毁或重建,可能会丢失该事务的更改。因此,只有在你确定不会发生此类情况时才应使用此方法。
3. commitNow
commitNow() 方法与 commit() 方法类似,但是它会立即执行事务,而不是将其添加到队列中。如果你需要立即执行事务,则可以使用此方法。
需要注意的是,commitAllowingStateLoss() 和 commitNow() 方法仅适用于 API 级别 24 或更高版本。如果你需要支持较早版本的 Android,建议使用 commit() 方法。
阅读全文