Android应用程序后台运行的简单检查

5
我正在追踪我的应用程序中当前可见的活动数量(应该为0或1),通过在每个Activity的onResume()中调用plusActivity(),在onPause()中调用minusActivity()。 plus / minusActivity位于扩展Application的myApplication类中。
这些方法会增加和减少计数器。每次调用minusActivity()时,它还会发布一个可运行的Runnable,在2秒后运行。当runnable执行时,如果最后一次关闭2秒钟前没有打开另一个activity(例如,foregroundedActivities == 0,因为没有任何调用plusActivity()在2秒内),则调用一个方法来执行一些需要在后台发生的操作。
以下是代码片段:
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,使用此方法来实现后台检测是否可接受?还是我真的需要使用Service来完成所有操作?因为似乎这样做会增加很多额外的开销,而我也看不出任何好处,因为这种方式似乎可以正常工作。

1个回答

1

你的解决方案可能有效,但我不确定。

你可以尝试使用BroadcastReceiver。如果你使用BroadcastReceiver,当一个活动执行onPause()时,你可以发出一个Intent以及你的加/减代码。BroadcastReceiver将能够再次执行你的应用程序...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接