[求助]关于共享数据设计上以及android机制上的问题

自己踏在android的路上算是刚刚起步,早前随着开发了一个项目,摸摸索索的有了自己的一些设计上的规范。

在昨天偶尔看到一个关于Application共享数据的帖子,经过测试才发现把数据存储到Application,当应用置换到后台一段时间后,Application确实会被释放,从而导致数据丢失,界面显示不出内容。这才发现之前所谓的“规范”其实就是坏习惯。

我涉及的应用普遍是依赖服务器的客户端应用,我习惯性的把从服务器上获取的数据存储在Application(因为其他地方可以通过这点复用数据而不需要重新请求),如上所述,知道会出现的问题后我开始反思设计,但是反思的主题不是“不应该在Application中存储数据”而是"数据存储在内容中不靠谱"。

一个实验:
定义:MyApplication、ActivityA、ActivityB、StaticTest
在ActivityA中,设置MyApplication.data,设置StaticTest.data(static field),通过Intent.putExtra("data", ..)传递数据跳转到ActivityB。

进入ActivityB后,按HOME,模拟应用闲置,然后切换回ActivityB,ActivityB会重新执行onCreate(),接着访问数据:
MyApplication.data和StaticTest.data会被释放,而Intent的内容会被保留。

1. Application和静态变量都可能被释放,例如使用HttpClient登录后client会自己维持session和cookie(服务器的校验凭证)。
例如:
login(String username, String password)之后,获取个人信息getInfo(),服务器根据session或者cookie判断你的身份。
那么不管是把该client放在application中获取还是静态类中获取都无法保证全局唯一,当资源被释放之后,实例里面维持的session和cookie自然丢失,那接下来的所有请求校验都会不通过了?这种问题怎么解决?

2. 从实验中,Intent的数据保存到哪里?为何不会丢失掉?

3. 即使通过Intent传递数据,但是数据量有大小限制,是否更有可靠的手段?



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值