gpt4 book ai didi

android - fragment Activity 中的 commitAllowingStateLoss()

转载 作者:IT王子 更新时间:2023-10-29 00:09:10 28 4
gpt4 key购买 nike

我的应用使用 fragment Activity ,它仅处于纵向模式,无法旋转屏幕。

最初我使用的是 commit() 方法,但现在我打算不加选择地将这些更改为 commitAllowingStateLoss() 用于 fragment Activity

在不重新评估我使用 fragment 的每个案例的情况下,是否有任何理由不不加选择地执行此操作?

最佳答案

如果我理解正确,您的意思是:是否有任何理由在不重新评估我使用 fragment 的每个案例的情况下不分青红皂白地这样做?

答案是肯定的 - 如果不仔细重新评估使用 fragment 的每个案例,您不应该这样做。

当然,通过防止由于配置更改(屏幕旋转)而重新启动,您已经消除了一个关键问题区域:即用户可以在调用 onSaveInstanceState 之后但在 commitAllowingStateLoss。在这种情况下,UI 的 fragment 或部分可能会丢失。有关此问题的非正式讨论,请参阅 post .

但在将 commit 替换为 commitAllowingStateLoss 之前,您应该考虑其他情况。

  1. 基本上,onSaveInstanceState 和 commitAllowingStateLoss 之间的任何 UI 更新: Android: IllegalStateException - When is it thrown?

  2. 如果您有任何更新 Activity UI 的 headless fragment ,那么它们的一些更新可能会丢失(参见 article)。

  3. Android 可能会“杀死”一个 fragment ,因为手机/标签的资源不足(请参阅此 answer)。

当然,如果阻止屏幕旋转,则可能不会调用 onSaveInstanceState,在这种情况下,丢失更新的机会窗口会增加。

如果您决定使用 commitAllowingStateLoss,那么您可以采取一些措施来最大程度地降低所涉及的风险:例如考虑在下次重新启动父 Activity 时执行 commit/executePendingTransactions (我知道您不想这样做,但其他人可能会阅读 this )。

最后(再次以防其他人阅读此内容 - 这与您的情况无关)处理 IllegalStateException 可能比从提交转移到 commitAllowStateLoss 更安全.例如,您可以坚持提交并处理 IllegalStateException。或者,您可能点击了 bug在 Android 中,可能有一种解决方法。

关于android - fragment Activity 中的 commitAllowingStateLoss(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17184653/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com