Android需要事件前景和背景

时间:2014-03-11 14:56:17

标签: android application-lifecycle

嗨朋友我正在制作一个应用程序,我需要在用户进入后台时显示某些内容,并在用户进入前景时再次显示。所以我需要在我们的应用程序进入后台时获得一个事件,当应用程序进入前面工作在8以上的api时,需要再次。

我尝试了所有的东西,但只能识别我的应用程序是否是前景。当我们再次在应用程序级别上线时,我需要事件。

1 个答案:

答案 0 :(得分:0)

您可以为所有活动定义超类并跟踪应用的状态。如果所有活动都处于停止状态 - 应用程序在后台,否则 - 在前台。在超级活动的onStart()onStop()方法中,您可以增加和减少可见活动的数量。然后在onStart()onStop()中检查是否有任何当前可见的活动。如果没有 - 应用程序变为活动/非活动状态,您可以调用您的方法:

public class SuperActivity extends Activity {
    private static int sVisibleActivitiesCount;

    @Override
    public void onStart(){
        super.onStart();
        if (SuperActivity.sVisibleActivitiesCount == 0) {
            onAppBecomesActive();
        }
        SuperActivity.sVisibleActivitiesCount++;
    }

    @Override
    public void onStop(){
        super.onStart();
        SuperActivity.sVisibleActivitiesCount--;
        if (SuperActivity.sVisibleActivitiesCount == 0) {
            onAppBecomesInactive();
        }
    }

    private void onAppBecomesActive() {
        // Do some staff
    }

    private void onAppBecomesInactive() {
        // Do some staff
    }
}

第二种方法是使用ActivityLifecycleCallbacks(min API 14)来监视活动生命周期并在一个地方跟踪应用程序状态,而不需要为所有活动提供超类。如果你的应用有minSdkVersion =" 14"那么我宁愿使用这种方法。