Android项目长时间在后台运行后,再次打开程序崩溃问题完美解决(APP在后台被系统回收后,如何重新启动)

当Android设备内存不足时,系统可能会回收应用,导致全局变量丢失,再次打开应用时引发异常。原因是Application作为全局对象被回收,先前保存的信息丢失。解决方法是在BaseActivity中判断应用是否被回收,如果被回收,则重启应用。通过设置一个管理类AppStatus记录应用状态,当状态变为被回收时,启动页会检测到并重新启动应用,从而避免崩溃。
摘要由CSDN通过智能技术生成

问题:

           因为手机内存不足的时候,会回收一些app,如果被回收的app中有全局变量,那么再次进入这个app就会出现异常报错。

 

原因:

          因为Application是全局变量,内存不足的时候会被回收,这个时候如果不是重启而是恢复之前的页面,系统会重新new 一个Application,所以没回收之前保存在Application中的信息都将没有了,这个时候被恢复的页面就可能因为需要Application中的信息报NullPointerException错。

         这说明:系统回收app后,再次进入此软件,Android只是恢复这个应用,并不是重启,它会创建一个新的Application对象并且启动上次用户离开时的activity以造成这个app从来没有被kill掉得假象。


What is Application
Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己 的Application,也很简单创建一个类继承 Application并在manifest的application标签中进行注册(只需要给Application标签增加个nam

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值