我阅读了有关Android如何处理“配置更改”的信息-通过销毁活动的Activity。
我真的很想从Android Team知道为什么。我将不胜感激,对推理的进行方式进行了解释,因为我不理解。正如我所见,它以这种方式发挥作用的事实使我们所有人陷入痛苦的世界。
假设您有一个活动,其中显示了许多EditText:s,复选框等。如果用户开始用文本/数据填充该表单,然后更改方向(或获得电话呼叫),则用户所做的所有输入都将消失。我还没有找到任何保留状态的方法。这迫使我们进行极其痛苦的编码,以至于不会丢失所有数据。
如我所见,您需要另一个“非活动”类(或者也许是“价值持有”类),每个“表单元素”(EditText,复选框等)都具有一个字段。
对于存在的每个“表单元素”,您都需要附加一个事件,例如“ onChanged”(或onTextChanged或类似的东西),以更新“ value-holding”类中的相应字段,以确保每个字符您键入的内容(例如在EditText中)将立即保存。
也许您可以使用一些侦听器(例如“ onDestroy”之类的东西),然后用数据填充值持有类。
我还在他们谈论使用Bundle,onSaveInstanceState和onRestoreInstanceState的地方找到了这条信息,但这也意味着程序员必须手动保存然后在正确的位置放回值?这种方法比上面我的建议要少一些麻烦,但仍然不是很好。
有人可以告诉我我完全错了,这不是它的工作方式,我完全错过了一些重要信息?
您应该阅读“ 应用程序基础知识”(特别是“ 活动生命周期”)。由于Activitys必须能够随时处理由于内存冲突等原因而被杀死的情况,因此,这是一种处理轮换的更干净的方法,而不会增加太多的复杂性-而不是检查每个资源是否有替代资源,重新构造布局等。 。您只需保存必要的数据,终止活动,重新创建活动,然后将数据加载回(如果您愿意处理自己管理的额外复杂性,则可以自己onConfigurationChanged处理配置更改。 )这也鼓励更好的做法-开发人员必须为他们的做准备Activity 会因为方向改变而被杀死,这具有(良好的)结果,即也准备好被记忆约束杀死。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。