关于android的activity被回收,导致的变量数据丢失的问题

原创 2013年12月02日 17:44:33

最近我们的项目在发布一段时间后,客户那边时常会反馈一个问题,就是手机或者pad在待机的条件下,经常会发生一种情况。就是客户花时间做了一部分数据,在待机之后,返回发现数据丢失了。 发生数据丢失,要么就是程序错误了,错误没体现出来,要么就是android系统本身把咱们的数据给回收了。 我开始也是一位是static静态变量的问题,可是我几乎没用static静态变量啊。但是bug确实是存在的。更头疼的是这种bug是偶现的,怎么去查呢?

有问题就得去找方法解决,度娘、google都翻了,没啥好办法。于是就干脆用最笨的方法,找到用户说的那个 页面,然后自己填入很多数据,然后坐等待机,坐等bug出现,1分钟,2分钟,10分钟。。。吃个午饭,哎呦,出现了,什么情况啊!! 头疼。怎么办?  再去等?  还记得看到一个blog,说的是 说到内存的问题,android会回收一些停滞一段时间的内存块,也就是说内存不够的时候,会出现这个问题。 于是我就试了一把,用一个低配置的pad,然后先打开自己的程序,然后挂起。继续打开其他的程序,例如:QQ、飞信、360等吃内存大的程序。然后在eclipse里的DDMS,监视着我的程序进程,果然出现了我要的情况,打开某个程序的时候,我的程序被干掉了,被回收了。回收了不是说被完全的finish了,我们可以在menu按键选择自己的程序,然后打开,又能重新进去,不过此时的数据已经不是原来的数据了。此时activity会再次执行onCreate方法的,也就是一个全新的activity了,所以原因找到了,怎么改呢?

其实到这里就有方法了,咱们android的activity有这方法:onSaveInstanceState(Bundle outState) , onRestoreInstanceState(Bundle savedInstanceState) , 这两个方法的调用机制我就不再bb了,google、度娘比我说的好,就是重写这两个方法,把局部变量做一个缓存,然后在activity被回收以后,执行oncreate方法或者onRestoreInstanceState(Bundle savedInstanceState),时候,把变量值再拿回来即可。

 

 

 

 

 

 

Android——处理设备旋转Activity销毁时临时数据丢失的问题

一,在设备的旋转的时候,发生了什么?           设备旋转时候,当前的activity实例会被系统销毁,然后创建一个新的Activity实例。接下来我们通过检测Activity的生命周期来观察...
  • lhc2207221755
  • lhc2207221755
  • 2015年10月17日 11:30
  • 2008

Android Activity回收与操作超时处理

本文实例为大家分享了Android Activity回收与操作超时的处理,供大家参考,具体内容如下 1、Activity的回收 针对多个activity退出的处理 关键代码: 1)、新建活动管...
  • xjbclz
  • xjbclz
  • 2016年10月23日 15:16
  • 925

解决Activity被系统回收问题

解决Activity被系统回收问题
  • jhope
  • jhope
  • 2016年11月24日 16:24
  • 899

Android 当App内存不足或在后台运行时回收部分activity的流程分析。

以前写的文章,放到博客上当记录吧。Android 当App内存不足或在后台运行时回收部分activity的流程分析。 首先我们要找到整个内存不足然后回调回收activity的入口,在哪里呢?在Acti...
  • cscs111
  • cscs111
  • 2017年08月25日 10:04
  • 670

Android Activity经常被自动回收

看看源码就知道咯~~~~当前使用的内存,超过最大内存的3/4就会开始自动回收activity呀  // Watch for getting close to heap limit.        ...
  • qq840727854
  • qq840727854
  • 2016年04月02日 19:19
  • 11190

Android 防止你的Activity 不能被销毁

为了提高你的应用内存的正确使用,一定要避免Activity不被销毁,其中注意以下几个方面: 1、不要把Activity对象以及Context对象传入到一个单例中,因为当单例不能被销毁时会一直不让Ac...
  • gufeilong
  • gufeilong
  • 2017年04月29日 15:08
  • 945

关于android的activity被回收,导致的变量数据丢失的问题

最近我们的项目在发布一段时间后,客户那边时常会反馈一个问题,就是手机或者pad在待机的条件下,经常会发生一种情况。就是客户花时间做了一部分数据,在待机之后,返回发现数据丢失了。 发生数据丢失,要么就是...
  • tenggangren
  • tenggangren
  • 2013年12月02日 17:44
  • 3948

后台的Activity被系统回收怎么办

你后台的Activity被系统回收怎么办:onSaveInstanceState       当你的程序中某一个Activity A 在运行时中,主动或被动地运行另一个新的Activity B ...
  • leilu2008
  • leilu2008
  • 2011年08月17日 22:14
  • 15858

Activity回收时候fragment的异常

在Android开发中,如果我们用到V4包里面的Fragment,在应用被切换到后台的时候,Activity可能被回收,但是创建的所有Fragment则会被保存到Bundle里面,下面是Fragmen...
  • zhangfei2018
  • zhangfei2018
  • 2015年11月18日 18:37
  • 1430

程序后台Activity被回收后再次启动fragment失效问题

出现的问题 最近在做项目的时候,遇到了fragment切换失效的问题,也就是fragment重叠的问题。当我点击fragment对应tab键时,通过hide隐藏其他三个fragment,通过show...
  • xbw12138
  • xbw12138
  • 2016年07月01日 23:45
  • 12039
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于android的activity被回收,导致的变量数据丢失的问题
举报原因:
原因补充:

(最多只允许输入30个字)