android-discuss
android-discuss copied to clipboard
[问答] 内存重启,如何处理单例恢复
如题,内存重启的时候,会自动回到被回收前的Activity,假如这个Activity所使用的一些数据是单例是由之前的一些界面网络请求获得的怎么恢复呢?
举个具体的例子,就比如预订酒店的APP,首先假定用户已登录会产生一个User单例,在第一个Activity A有一个酒店列表,选择酒店,进入第二个Activity B后选择酒店房间,然后进入第三个Activity C后录入订单,然后变态的在于,需求要求录入订单的时候需要切换酒店以及房间,所以我在前面第一个Activity A的时候根据网络请求产生了Hotel单例记录了酒店列表数据…… 正在这时候,用户home键返回桌面,去使用其他APP了,内存紧张后,User单例被回收,用户再次进入应用,直接进入Activity C,我应该怎么恢复单例User以及Hotel单例呢?如何恢复才能让用户正常使用,还是说直接捕捉,重启应用。
写 缓存~ 根据单例中的数据为null的情况重新读缓存到内存中~
@LiuRanchao 但是每个页面都有不同的业务逻辑,而且需要判断的单例都不一样,应该如何写或者封装优化结构且增加代码复用性呢?有具体的思路吗?
很好奇大公司是怎么处理这些逻辑的?
也是一样的,先读缓存,缓存没有再读磁盘文件,再没有就做网络请求,跟图片加载框架类似。出现你说的这种情况的时候,最后需要交互协助处理下,在Activity C页面做一个loading视图,这样体验会相对好点。@biaomingzhong
Activity#onSaveInstanceState(Bundle),不就是解决这类问题的吗?
强引用?