gpt4 book ai didi

android - 解决未决数据更改的理想方法(何时保存更改)?

转载 作者:行者123 更新时间:2023-12-03 10:33:03 27 4
gpt4 key购买 nike

我手上有一个非常特殊的案例,我很惊讶,似乎没有人写过关于Android的类似内容(或我的Google技能很烂)

情况1:

  • 用户可以将文本输入到field1和field2中。
  • 用户还可以重新排列列表中的项目(显示在RecyclerView中)

  • 每当用户进行任何编辑时,UI都已经在显示更新的数据(例如,编辑字段1将在用户键入文本时显示该文本,而项列表将在用户重新排列它们时以新的顺序显示它们) )。

    立即在此处保存数据将触发UI刷新(以显示相同的内容),并给用户带来糟糕的体验(field1的焦点将移至首个字母,如果用户快速重新排列列表项,则应用程序可能会崩溃)。

    因此,存储编辑并在以后执行它们是有意义的。

    情况2:
  • 用户可以点击加/减按钮来增加/减少值
  • 用户可以在field3中输入文本。

  • 与上述情况#1一样,编辑字段将使UI处于更新状态。但是,在这种情况下-点击加/减按钮也会更新数据,但不会更新UI(除非保存了数据,然后再次运行查询...)。

    问题:
  • 如果用户执行编辑时立即保存数据,则除了进行大量保存外,还会使用户体验变差,因为在某些情况下UI会刷新,而UI已经是最新的。
  • 如果将编辑隐藏起来并在以后执行,则UI不会刷新。

  • 我使用的是MVVM,因此所有执行的 Action 都发送到 View 模型,并决定要执行的操作。我发现自己正在寻找一种可以在应用程序的不同屏幕上工作的解决方案,但是我知道那只会使自己陷入困境,然后跳下桥。当然,肯定有某个人遇到了这一挑战并且对此有一些见解?

    理想的解决方案:一种仅适用于所有不同屏幕的解决方案。你有吗?请告诉我。

    /绝望的Android开发

    最佳答案

    首先,让我开始说,我认为这里没有正确的答案,但是您应该考虑自己的应用程序做什么,然后确定需要做什么。

    让我解释。考虑两个应用程序,一个保存TODO项目,另一个是银行应用程序。

    现在,我将解释我认为对您的应用程序有效的方法,因为您没有明确提及与之矛盾的任何要求。

    在这种情况下,我相信乐观是个好主意。假设事情不会失败,当事情失败时,请尝试退出。那是什么意思?

    这意味着,例如,在您提到的场景中,用户在字段中输入了一些内容。您应该让UI自动更新(我们在这里不做任何操作,这只是Android),在这种情况下,您可以将这些更改保存到本地或保存到服务器上都没有关系。

    当然,您可以优化而不是保存每个字母,而以某种方式限制输入,但是您知道了。

    这可以是成功也可以是失败,因为我们很乐观,我们让UI更新,并且用户感到我们的应用程序正在快速点亮。您无需重新加载任何内容或刷新任何内容。用户界面现在应该已经与您的Model状态匹配。

    如果事情不顺利了,并且由于某种原因您的HTTP请求或数据库更新失败了,那么您需要采取措施。但请尝试使您的 react 适当。

    您可以再次以多种方式处理该故障,具体取决于您在应用程序中所做的工作的严重程度。

  • 您可以只显示一个Toast,或者如果用户操作如此简单,甚至什么也不做。
  • 如果操作具有一定意义,则可以向用户显示一些更具体的内容,例如带有重试和说明发生情况的Snakbar。
  • 您杀死了进程并完成了所有 Activity -从来没有这样做-而是显示了一个非常令人讨厌的弹出窗口,并且如果用户正在做的事情很关键,则可能会将UI值还原为正确的弹出窗口。

  • 现在,这种方法不仅给人以应用程序非常快的感觉,而且还使事情变得简单。

    另一个建议是,不要尝试解决尚不存在的问题,这意味着不要开始为一些永远不会超过 View 并且永远不会实现的本地持久性作业实现后台服务和作业队列。

    相反,请使用度量值,并使用某些工具记录这些错误和失败,然后使用这些统计信息知道需要解决的问题-如果有的话-

    回到我们的两个应用程序,此方法对于TODO应用程序可能是完美的,但是对于银行应用程序可能不太好。

    假设用户转账,我们马上说,ALL GOOD MATE!然后请求失败,并且您的用户的房东将他拒之门外,因为他从不支付租金。

    因此,这一切都关系到您正在执行的操作有多敏感。

    关于android - 解决未决数据更改的理想方法(何时保存更改)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47761065/

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