开发者社区> 问答> 正文

配置更改(方向更改)并破坏了活动-这是它应该工作的方式吗?

我阅读了有关Android如何处理“配置更改”的信息-通过销毁活动的Activity。

我真的很想从Android Team知道为什么。我将不胜感激,对推理的进行方式进行了解释,因为我不理解。正如我所见,它以这种方式发挥作用的事实使我们所有人陷入痛苦的世界。

假设您有一个活动,其中显示了许多EditText:s,复选框等。如果用户开始用文本/数据填充该表单,然后更改方向(或获得电话呼叫),则用户所做的所有输入都将消失。我还没有找到任何保留状态的方法。这迫使我们进行极其痛苦的编码,以至于不会丢失所有数据。

如我所见,您需要另一个“非活动”类(或者也许是“价值持有”类),每个“表单元素”(EditText,复选框等)都具有一个字段。

对于存在的每个“表单元素”,您都需要附加一个事件,例如“ onChanged”(或onTextChanged或类似的东西),以更新“ value-holding”类中的相应字段,以确保每个字符您键入的内容(例如在EditText中)将立即保存。

也许您可以使用一些侦听器(例如“ onDestroy”之类的东西),然后用数据填充值持有类。

我还在他们谈论使用Bundle,onSaveInstanceState和onRestoreInstanceState的地方找到了这条信息,但这也意味着程序员必须手动保存然后在正确的位置放回值?这种方法比上面我的建议要少一些麻烦,但仍然不是很好。

有人可以告诉我我完全错了,这不是它的工作方式,我完全错过了一些重要信息?

展开
收起
Puppet 2020-01-24 17:16:05 475 0
1 条回答
写回答
取消 提交回答
  • 您应该阅读“ 应用程序基础知识”(特别是“ 活动生命周期”)。由于Activitys必须能够随时处理由于内存冲突等原因而被杀死的情况,因此,这是一种处理轮换的更干净的方法,而不会增加太多的复杂性-而不是检查每个资源是否有替代资源,重新构造布局等。 。您只需保存必要的数据,终止活动,重新创建活动,然后将数据加载回(如果您愿意处理自己管理的额外复杂性,则可以自己onConfigurationChanged处理配置更改。 )这也鼓励更好的做法-开发人员必须为他们的做准备Activity 会因为方向改变而被杀死,这具有(良好的)结果,即也准备好被记忆约束杀死。

    2020-01-24 17:16:15
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《用管控策略设定多账号组织全局访问边界》 立即下载
快速变化背景下,组织如何保持过程的稳定性 立即下载
快速变化背景下,组织如何保持过程的稳定性? 立即下载