简单检查Android应用程序后台

时间:2011-03-31 22:11:51

标签: android

我正在通过从onPause()调用每个Activity的onResume()和minusActivity()中的plusActivity()来跟踪我的应用中当前可以看到的活动数量(应该是0或1)

plus / minusActivity在我的myApplication类中,它扩展了Application。

方法递增和递减计数器。每次调用minusActivity()时,它都会发布一个在2秒后运行的runnable。当runnable执行时,如果另一个活动在2秒前关闭的最后一个活动之后没有打开(例如foregroundedActivities == 0,因为2秒内没有任何名为plusActivity()),那么它调用一个方法来做一些需要发生的事情背景时。

这是一个片段:

public void plusActivity(){
    foregroundedActivities++;
}

public void minusActivity(){
    foregroundedActivities--;
    timingHandler.removeCallbacks(checkBackgroundTask);
    timingHandler.postDelayed(checkBackgroundTask, 2000);
}

public void checkIfBackgrounded(){
    if(foregroundedActivities==0){
        doWhateverWeDoWhenBackgrounded();
    }
}

public Runnable checkBackgroundTask=new Runnable(){

    @Override
    public void run() {
        checkIfBackgrounded();
    }

};

考虑到此过程运行的2秒时间范围,并且不涉及对Activity的回调,是否可以接受完成后台检测的方法,或者我是否真的需要使用服务执行所有这些操作?这似乎是很多开销,我看不到任何好处,因为这似乎工作正常。

1 个答案:

答案 0 :(得分:1)

您的解决方案可能有效,但我不知道。

您可以使用BroadcastReceiver。如果您使用BroadcastReceiver,则可以在活动执行onPause()时使用您的正/负代码发出Intent。 BroadcastReceiver将能够再次执行您的应用程序......