一、消灭全局变量
在内存不足时,系统会回收一部分闲置的资源,由于App被切换到后台,所以之前存放的全局变量很容易被回收,这时再切换到前台继续使用,会报空指针崩溃。想彻底解决这个问题,就要使用序列化。
1.把数据作为intent的参数传递
使用intent进行页面间数据的传递,即使activity被摧毁,intent上的数据依然存在,所以intent是保存数据的好地方,比本地文件靠谱。
但是intent能传递的数据类型也必须支持序列化,像JSONObject这样的数据类型,是传不过去的。
intent上携带的数据量过大,也会发生崩溃。
2.把全局变量序列化到本地
我们在每次修改全局变量时,都要把值序列化到本地文件中,我们再次使用全局变量时,如果为空,就从本地文件中再反序列化到内存中。这不是长远之计。
序列化的缺点:①每次设置全局变量的值都要强制执行一次序列化的操作,容易造成ANR。
②序列化生成的文件,会因为内存不够而丢失。
二、App数据缓存设计
App缓存只能针对GET类型的接口,对POST不适用。因为GET是获取数据,而POST是修改数据。
可以添加一个强制更新按钮,暴露一个boolean类型的参数,用于判断是否遵循APP端缓存策略,如果是将缓存时间设置为0这样就不会执行缓存策略了。
三、MockService(自己编写数据)
四、用户登录场景
贯穿App的,应该有一个User全局变量,在每次登陆成功后,会将isLogin属性设置为true,在退出登录后,则将该属性设置为false。这个User全局变量要支持序列化到本地,这样数据才不会因为内存回收而丢失。
时间: 2024-10-13 01:40:59