程序退到后台在返回,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这种事最简单的,不需要持久化任何数据,也可以设置一个主界面,这样体验更佳




你可能感兴趣的:(Android)