程序退到后台在返回,application中的缓存数据被回收,导致程序异常



      Application中可以缓存一些数据,当做全局变量使用,但是当程序退到后台,手机内存不足时,或者用手机加速软件加速,这些数据就会被回收,当再次进入程序的时候,就会出现空指针异常。程序强制退出。

       解决方案。
    一、可以用到数据持久化技术,将缓存的数据持久化到设备中,可以用SharePreference和sqlite数据库将数据保存,当被回收的时候再次取出。这种方法比较复杂,数据较多时需要重新设计数据库进行数据存储,所以在一开始的时候就要考虑到数据是否需要持久化。
    二、可以设置一个程序入口,当数据被回收的时候统一进入到程序入口界面,这个界面的信息获取就相对简单了。就像qq,进入的时候停留在好友列表。
     实现方法
     在不是程序入口界面的activity中进行判断,可以在oncreate方法中进行判断。当数据被回收的时候就调用android.os.Process.killProcess(android.os.Process.myPid());结束当前的activity。
     系统其实只是记录了APP中activity打开的顺序,当我们再次打开被系统回收的APP的时候APP中其实只有一个activity,当我killProcess的时候,系统又会重新建一个线程去打开第二个activity,依次类推   当打开程序入口的activity时,由于我们去没有销毁它,所以activity被重新加载,相当于重新打开了应用  。
可以设置这个入口是loginActivity这种事最简单的,不需要持久化任何数据,也可以设置一个主界面,这样体验更佳




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值