Android 正在运行的应用被系统Kill了怎么办?
2013-11-07 14:58
387 查看
应用开发中我们可能会遇到这样的情况,当调用系统应用或者别的应用后,在回到上个应用时,页面没有恢复之前的状态,已初始化数据丢失了,这是啥子原因?
简单分析原因:
当系统资源紧张时,会根据进程的级别进行资源释放,之前打开Activity被系统回收,当该Activity再此返回前台时,系统会重启该activity,重新onCreate。于是该应用中所有内存中的变量,包括全局变量 以及 各种标志位,都会被重置为初始化状态,这样就会造成系统重启后的activity状态异常。
基本解决思路:
在onSaveInstance()中保存变量,Activity被kill掉时,会调用onSaveInstance方法;
这样在系统重启该activity,会先执行onCreate,之后会执行onRestoreInstance方法,参数里会有之前保存的变量。这样就可以根据之前的状态数据初始化Activity。
简单分析原因:
当系统资源紧张时,会根据进程的级别进行资源释放,之前打开Activity被系统回收,当该Activity再此返回前台时,系统会重启该activity,重新onCreate。于是该应用中所有内存中的变量,包括全局变量 以及 各种标志位,都会被重置为初始化状态,这样就会造成系统重启后的activity状态异常。
基本解决思路:
在onSaveInstance()中保存变量,Activity被kill掉时,会调用onSaveInstance方法;
这样在系统重启该activity,会先执行onCreate,之后会执行onRestoreInstance方法,参数里会有之前保存的变量。这样就可以根据之前的状态数据初始化Activity。
相关文章推荐
- android应用完全退出,并且从最近运行程序以及系统正在运行列表中完全抹除。
- Android获得手机所有应用(非系统)、正在运行的Service和Activity
- Android获取当前系统正在运行应用及其数据流量
- android 7.0系统怎么让应用开机就自动设置访问权限。
- Android 应用运行期间系统配置(系统语言、字体大小等)改变引发的问题修改
- android获取当前正在运行的栈顶的应用包名
- Android 读取正在运行非系统的程序
- 当Android系统内存不足时,会回收后台运行应用的内存
- android当前正在运行的应用包名
- win8.1系统出现C0000034正在应用更新操作怎么办
- 做Android 系统/应用开发怎么可以不懂自动化测试
- android应用只有service或者broadcastReceiver是不能被系统运行的
- android通过执行netstat及cat /proc/net/tcp查看正在运行应用的本地端口号pid和uid以及对方的IP和端口号
- Android判断某一应用是否正在运行与判断某一Service是否正在运行
- 做Android 系统/应用开发怎么可以不懂自动化测试
- Android中获得正在运行的程序和系统服务的方法
- iOS应用崩溃日志分析低内存闪退 因为低内存崩溃日志与普通崩溃日志略有不同,所以本教程特别分开说明一下。 iOS设备检测到低内存时,虚拟内存系统发出通知请求应用释放内存。这些通知发送到所有正在运行
- [Android Pro] 获取手机已经安装的应用 和 获取当前正在运行的所有进程(一个uid对应多个pid)
- Android 5.0以上 获取当前正在运行的应用包名
- 做Android 系统/应用开发怎么可以不懂自动化测试