Android监测程序压入后台及从后台返回
在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) { // 进入后台 } }
相关推荐
Nostalgiachild 2020-11-13
韩伟佳 2020-10-09
wuleihenbang 2020-09-16
zzqLivecn 2020-07-09
chenjinlong 2020-06-10
yinbaoshiguang 2020-06-09
sgafdsg 2020-06-04
ustcrding 2020-06-03
chenjinlong 2020-06-03
AndroidGA 2020-06-01
安辉 2020-05-27
绿豆饼 2020-05-26
CNETNews 2020-05-26
xilove0 2020-05-12
绿豆饼 2020-05-12
ChainDestiny 2020-05-07
doomvsjing 2020-05-07
hqulyc 2020-05-05
lyccsu 2020-04-30