Android-->我走过的坑

场景回放


今天在开发项目中,本来想在用户退出应用程序后(按两次返回退出)利用SharePreferences在onDestory中保 存某些数据。结果发现在Activity的onCreate中总不能获取到上次保存的数据。最开始以为是SharePreferences未调用 正确,结果不是。接着发现一个比较坑的事情,Activity的所有生命周期方法都执行了,但是onDestory方法没有执 行,这也导致数据没有保存成功。

分析


onDestory方法怎么会无缘无故没有执行呢!?这里只能分析我们项目中的代码了。在两次返回退出的逻辑中有这也一段代码。

ActivityManagerTool.getActivityManager().exit();

接着看这exit方法是什么鬼。
         /**
	 * 关闭所有的activity
	 */
	public void exit() {
		for (Activity activity : activities) {
			if (activity != null) {
				activity.finish();
			}
		}
		System.exit(0);
	}
当所有activity都finish后,就强制杀死整个进程......,这玩的有点大了。

到这里就猜想,由于整个进程被强制杀死导致onDestory方法还没来得及执行。接着我将

System.exit(0);

这段代码注释掉,然后执行程序。果然onDestory方法执行了,数据保存成功!“呵呵”

也不知道这代码是哪个帅哥美女写的,这坑挖的相当给力啊。

最后正确做法应是将System.exit(0)放在onDestory方法中最后执行,这样才能保证Activity中onDestory方法被调用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值