Android监测程序压入后台及从后台返回

本文介绍了一种通过在Activity中维护一个计数器来区分Activity从后台返回的方法,避免依赖API14提供的onTrimMemory方法。通过在onStart和onStop方法中对计数器进行加减操作,可以实现对Activity状态的准确判断。
摘要由CSDN通过智能技术生成

在API14中,android提供了一个新的状态监听的接口 ComponentCallbacks2。在当中的onTrimMemory方法中,提供了一个状态参数 TRIM_MEMORY_UI_HIDDEN。应该算是一个“正式”的进入后台标志了,之所以打引号,是因为这个状态本意上并不是为了监听进入后台而设计的,它只是为了让开发人员能够在程序进入后台的时候去释放一些内存。但是,这个确实能够准确的监控。

那有没有别的办法可以不依靠API14也能做呢?答案是肯定的。

首先,程序压入后台,Activity肯定是要走pause、stop的,返回的时候会走resume和start,但是正常Activity的切换也是要走这几个方法的,怎么区分呢?

根据Activity的生命周期可以知道,Activity A启动Activity B是先走B的onStart,再走A的stop,这样我们可以根据这个特点,建一个baseActivity(正常应该每个人应用都会有吧),在里面建立一个计数器v,在onStart和onstop里分别对v+1和-1;这样可以保证v在切换完成后的增量是0,最后的值应该是1(应用启动时的mainActivity)。这样再程序压入后台的时候会在stop里对计数器-1,这样再返回的时候start里得到的值就是0,这样就可以判断是从后台返回了。大致代码如下:

private static int v;
protected void onStart() {
           super.onStart();
           if (v== 0) {
			// 从后台返回

		}
		v++;
}

protected void onStop() {
       super.onStop();
		if (v> 0)
			v--;
	
		if (sessionDepth == 0) {
			// 进入后台
		}
   }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值