您可以为所有活动定义一个超类并跟踪应用程序的状态。如果所有活动都处于停止状态 - 应用程序在后台,否则 - 在前台。在您的超级活动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(最低 API 14)来监控活动生命周期并在一个地方跟踪应用程序状态,而不需要所有活动的超类。因此,如果您的应用具有 minSdkVersion="14",我宁愿使用这种方法。