ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Android Fragment 状态管理踩坑合集:那些“回来就错乱“的场景

Android Fragment 状态管理踩坑合集:那些“回来就错乱“的场景 有些崩溃只在"进程被系统杀掉后恢复"时出现,有些数据丢失你根本看不见——它们都藏在 Fragment 的保存与恢复里。前言用 Fragment 的人,八成都被这几种诡异问题困扰过:应用切到后台,过一会儿回来,直接崩溃,堆栈里是一堆ClassCastException。明明调用了show(),却告诉你Can not perform this action after onSaveInstanceState。屏幕一转,页面里的定时器、异步任务全部丢失,界面卡死在那。一个对话框,第一次能弹出来,第二次怎么点都没反应。这些问题单个看都像玄学,但凑到一起你会发现:它们全都是 Fragment 生命周期和状态保存机制的"边角料"被触发了。这篇文章把这几个坑一次性讲透,每一个都有对应的解法。一、进程被杀后恢复崩溃:ClassLoader 之谜这是最经典也最隐蔽的一个。场景:应用在后台被系统回收,用户切回来,系统帮你恢复 Fragment 的状态——然后崩了,崩溃点是一个ClassCastException,但崩溃的类看起来毫无问题。根因在于Bundle 的 ClassLoader。Fragment 的状态被序列化保存时,内部的子 Bundle 会记录它是由哪个 Clas
返回列表