commitNow()与commit
时间: 2023-11-17 12:03:41 浏览: 34
commit()和commitNow()都是用于提交FragmentTransaction的方法,但它们之间有一些区别。
commit()方法是异步执行的,它会将提交的事务加入到主线程的消息队列中,等待主线程空闲时再执行。因此,如果在提交事务后立即尝试访问FragmentManager,可能会出现IllegalStateException异常。
而commitNow()方法是同步执行的,它会立即执行提交的事务,因此不会出现IllegalStateException异常。但是,如果在执行commitNow()方法时主线程正在执行其他操作,可能会导致ANR(应用程序无响应)。
因此,如果你需要立即执行提交的事务并且可以保证当前没有其他操作正在执行,可以使用commitNow()方法。否则,建议使用commit()方法。
相关问题
Android fragment commitNow和commit区别
在Android中,FragmentTransaction类提供了两种提交方式:commit()和commitNow()。它们的区别如下:
1. commit()方法是异步执行的,它会将提交的事务加入到主线程队列中,等待主线程空闲时再执行。而commitNow()方法是同步执行的,它会立即执行提交的事务。
2. commit()方法可能会出现IllegalStateException异常,因为它是异步执行的,如果在Activity状态已经保存时调用了commit()方法,就会抛出该异常。而commitNow()方法不会出现这个问题,因为它是同步执行的。
3. commit()方法的返回值是一个int类型的标识符,表示该事务的状态。而commitNow()方法没有返回值。
下面是两个方法的使用示例:
```java
// 使用commit()方法提交事务
getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).commit();
// 使用commitNow()方法提交事务
getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).commitNow();
```
Android commitAllowingStateLoss和commitNow 、commit的区别
这三个方法都是用于提交 FragmentTransaction 的,但是它们有一些区别。
1. commit
commit() 方法是将 FragmentTransaction 添加到 Fragment 管理器的事务队列中,然后在下一次执行该队列时执行。如果你立即想要执行事务,可以调用 executePendingTransactions() 方法。
2. commitAllowingStateLoss
commitAllowingStateLoss() 方法与 commit() 方法非常相似,但是它允许在 Activity 状态保存时提交 FragmentTransaction。这意味着如果 Activity 在提交事务时发生了销毁或重建,可能会丢失该事务的更改。因此,只有在你确定不会发生此类情况时才应使用此方法。
3. commitNow
commitNow() 方法与 commit() 方法类似,但是它会立即执行事务,而不是将其添加到队列中。如果你需要立即执行事务,则可以使用此方法。
需要注意的是,commitAllowingStateLoss() 和 commitNow() 方法仅适用于 API 级别 24 或更高版本。如果你需要支持较早版本的 Android,建议使用 commit() 方法。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)