程序退到后台在返回,application中的缓存数据被回收,导致程序异常
来源:互联网 发布:经淘宝排查认定你实际 编辑:程序博客网 时间:2024/06/05 01:58
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 0
- 程序退到后台在返回,application中的缓存数据被回收,导致程序异常
- Android按返回键把程序退到后台而不是退出
- 程序退到后台的时候,所有线程被挂起,系统回收所有的socket资源问题及解决方案
- iOS 程序退到后台长期运行
- 程序从后台到前台,内存被回收导致的空现象
- iOS退到后台的程序需要关闭吗?
- 判断程序在前台还是退到后台的方法
- 应用待机时间过长导致内存被回收程序崩溃
- 按挂机键后程序退到后台运行,按c键结束程序
- 【转】按挂机键后程序退到后台运行,按c键结束程序
- 程序退到后台被杀掉进程后打开程序仍然保持登录状态
- app按home键退到后台后,再次点击程序图标重新启动程序的解决办法
- 应用退到后台,返回主界面
- 程序异常导致奔溃
- 仿微信按返回键app退到后台,并在通知栏里显示
- 苹果开发小记(七):教你程序退到后台,还能执行代码
- android 实现home键功能的几种方式,退到后台但不退出程序
- android 实现home键功能的几种方式,退到后台但不退出程序
- 关于java项目与javaweb项目
- Lua 作为配置文件(2)
- MySQL EXPLAIN 命令详解学习
- iOS8 PUSH解决方法
- Oracle 数据访问组件 (ODAC) 全称:Oracle Data Access Components
- 程序退到后台在返回,application中的缓存数据被回收,导致程序异常
- nyoj-662 汽水瓶
- 自定义dialog
- 招聘高级软件测试工程师
- 转 Linux多线程通信及同步
- IHttpModule
- android is not translated in 报错解决方案
- solr schema.xml Field属性详解
- load data 方式导入的数据不可以用binlog日志进行恢复,因为binlog里面不产生insert sql语句。