嗨朋友我正在制作一个应用程序,我需要在用户进入后台时显示某些内容,并在用户进入前景时再次显示。所以我需要在我们的应用程序进入后台时获得一个事件,当应用程序进入前面工作在8以上的api时,需要再次。
我尝试了所有的东西,但只能识别我的应用程序是否是前景。当我们再次在应用程序级别上线时,我需要事件。
答案 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"那么我宁愿使用这种方法。