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


如果一个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被重新加载,相当于重新打开了应用


猜你喜欢

转载自zheyiw.iteye.com/blog/2042873