android 告诉你Application中存储对象,为什么有的时候为空的情况

我们有时候在方便有些数据在其他地方都可以用到,可以有很多方式,比如用一个去维护这些保存的数据,以便在其他可以方便取出来使用,在android中我们知道也可以在Application中存放数据,因为Application是项目中一个全局变量,只要在四个组件以及Context对象,就可以获取到Application对象,然后把值取出来,不知道有没有遇到有时候在Application对象取某个对象遇到空指针异常情况,当然了这种情况不那么容易发生,是在一定条件发生的,一般都是app切换到后台了,而且很多时间再打开app,到了某一个activity中,而这个activity中有个操作就是从Application中取获取某个对象造成上述情况的发生,

比如:

  1. 用户按home键离开这个app。几个小时后,Android系统为了回收内存kill掉了这个app。到目前为止,一切尚好。接下来就是crash的部分了…用户重新打开这个App。Android系统创建一个新的MyApplication 实例并恢复 GreetLoudlyActivity

  2. GreetLoudlyActivity从新的MyApplication去获取对象,由于这个MyApplication是系统新创建的对象,之前维护的数据全没了,这个时候去获取对象肯定为null了,之前以为如果这个app被kill了以后,再打开app相当于重新启动这个app,后来发现这是错误的想法!在网上看到一篇博文,关于这方面的介绍,

  3. 整个问题的核心在于:application 对象不会一直呆着内存里面,它会被kill掉。与大家普遍的看法不同之处在于,实际上app不会重新开始启动。Android系统会创建一个新的 Application 对象,然后启动上次用户离开时的activity以造成这个app从来没有被kill掉得假象。这就是导致为什么在Application中存放对象有什么很危险的原因!




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值