La diferencia entre el cambio de fragmentos de Android commitAllowingStateLoss y commit()

commit()y commitAllowingStateLoss()son dos métodos utilizados para enviar FragmentTransaction en FragmentManager de Android. La principal diferencia entre ellos es la forma de manejar la "pérdida de estado".

  1. commit() : cuando este método confirma una transacción, si el estado se ha guardado (es decir, se ha llamado al método onSaveInstanceState() de la actividad), generará una excepción. Esto se debe a que FragmentManager guardará la pila de reversión de la transacción después de guardar el estado, por lo que si se confirma una transacción después de guardar el estado, la transacción no se guardará en la pila de reversión. Esto puede conducir a un estado incoherente cuando la aplicación restaura el estado.

  2. commitAllowingStateLoss() : este método permite confirmar una transacción después de guardar el estado, incluso si esto resulta en la pérdida del estado. No arrojará una excepción por pérdida de estado, pero si la transacción se confirma después de guardar el estado, la transacción no se guardará en la pila de reversión, lo que puede causar un estado incoherente cuando la aplicación restaura el estado.

En general, debe intentar evitar realizar transacciones después de que se haya guardado el estado, ya que esto puede causar que el estado de la interfaz de usuario de la aplicación sea inconsistente con el estado real de la aplicación. Pero en algunos casos, es posible que desee usar commitAllowingStateLoss(), por ejemplo, cuando su aplicación puede tolerar la pérdida del estado de la interfaz de usuario en determinadas circunstancias.

Supongo que te gusta

Origin blog.csdn.net/mp624183768/article/details/130863398
Recomendado
Clasificación