关于Activity在后台被销毁的处理_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 关于Activity在后台被销毁的处理

关于Activity在后台被销毁的处理

 2014/4/10 12:51:55  zheyiw  程序员俱乐部  我要评论(0)
  • 摘要:如果一个APP在被转到了后台,就很有可能被系统回收,当APP在后台被系统回收,再次打开APP的时候,会发生什么事情呢?(以下是个人测试得到)1,一般所有能回收的Activity都会被回收,Application也会销毁2,会在一个新的进程中新建一个应用,意味所有旧的变量,常量都不存在了,是所有哦!!!3,重新加载APP最后显示的Activity4,这个时候点击返回键,会重新加载倒数第二个Activity,以此类推..
  • 标签:Activity
class="java">

如果一个APP在被转到了后台,就很有可能被系统回收,
当APP在后台被系统回收,再次打开APP的时候,会发生什么事情呢?(以下是个人测试得到)
1,一般所有能回收的Activity都会被回收, Application 也会销毁
2,会在一个新的进程中新建一个应用, 意味所有旧的变量,常量都不存在了 ,是所有哦!!! 
3,重新加载APP最后显示的Activity
4,这个时候点击返回键,会重新加载倒数第二个Activity, 以此类推...

我遇到的问题是保存在 全局变量 和 静态变量 都没有数据了

我要实现的效果是如果APP被后台回收,就重新打开应用, 实现如下:

1,定义一个基类BaseActivity 
2,除了程序入口的Activity 其他activity都继承BaseActivity
3,在BaseActivity的onCreate方法中判断必要的变量是否销毁,如果销毁了就调用
android.os.Process.killProcess(android.os.Process.myPid());
来结束整个应用

这样所有的activity都会被关闭,而程序入口的activity会重新加载,达到了重新加载的效果

为什么 killProcess 不会结束程序入库的activity呢?
分析如下: 
系统其实只是记录了APP中activity打开的顺序,当我们再次打开被系统回收的APP的时候APP中其实只有一个activity,当我面killProcess的时候,系统又会重新建一个线程去打开倒数第二个activity,依次类推
当打开程序入口的activity时,由于我们去没有销毁它,所以activity被重新加载,相当于重新打开了应用


发表评论
用户名: 匿名