嗨,我正在制作一个应用程序,当用户进入后台以及用户进入前景时,我需要在其中显示一些内容。因此,当我们的应用程序进入后台时,我需要获得一个事件,并且当应用程序在8号以上的API中工作时再次。
我尝试了所有事情,但只能识别我的应用程序是否前景。当我们在应用程序级别再次在线时,我需要活动。
您可以为所有活动定义超类并跟踪应用程序的状态。如果所有活动都处于停止状态 - 在后台应用程序,则在前景中。在您的超级活动的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"。