多个Activity时,检测软件到后台的方法

开发时经常会遇到这种情况:n多个Activity,1个Service,不管哪个Activity在当前屏幕,程序都想监听到自己切换到后台的事件。

这里切换到后台包括用户点击home键,其他应用强行启动,比如来电话。

想了几个方法,优缺点如下:

想法一:

使用一个布尔值isBackground来判断,当Activity调用stop时,isBackground = true,当Activity调用start时,isBackground = false。

本以为这样就可以分辨出用户是点击home键退出该Activity,还是从这个Activity跳到另一个Activity了,但是实际测试发现,当从Act_1跳到Act_2时,是先调用Act_2里的生命周期函数,然后才调用Act_1的生命周期函数,悲剧了,这个方法行不通。

想法二:

最后终于想到了比较好的解决方法,使用全局计数器,当Activity调用start时,计数器+1,当Activity调用stop时,计数器-1,这样,如果计数器为0,就说明程序在后台运行,可以写一个BaseActivity来统一管理计数器,其他Activity继承它就行了。

posted @ 2012-10-24 10:44  周柯文  阅读(666)  评论(0编辑  收藏  举报