Dies kann durch eine effiziente Verwendung erreicht werden Application.ActivityLifecycleCallbacks erreicht werden
Nehmen wir zum Beispiel den Namen der Aktivitätsklasse als ProfilActivity, um herauszufinden, ob er sich im Vordergrund oder im Hintergrund befindet
Zuerst müssen wir unsere Anwendungsklasse durch Erweitern erstellen Anwendungsklasse
welche implementiert
Application.ActivityLifecycleCallbacks
Lassen Sie uns meine Anwendungsklasse wie folgt sein
Anwendungsklasse
public class AppController extends Application implements Application.ActivityLifecycleCallbacks {
private boolean activityInForeground;
@Override
public void onCreate() {
super.onCreate();
//register ActivityLifecycleCallbacks
registerActivityLifecycleCallbacks(this);
}
public static boolean isActivityVisible() {
return activityVisible;
}
public static void activityResumed() {
activityVisible = true;
}
public static void activityPaused() {
activityVisible = false;
}
private static boolean activityVisible;
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
//Here you can add all Activity class you need to check whether its on screen or not
activityInForeground = activity instanceof ProfileActivity;
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
public boolean isActivityInForeground() {
return activityInForeground;
}
}
In der obigen Klasse gibt es ein Override- Verfahren für ActivityResumed von ActivityLifecycleCallbacks
@Override
public void onActivityResumed(Activity activity) {
//Here you can add all Activity class you need to check whether its on screen or not
activityInForeground = activity instanceof ProfileActivity;
}
Wenn alle Aktivitätsinstanzen gefunden werden, die derzeit auf dem Bildschirm angezeigt werden, überprüfen Sie einfach mit der oben beschriebenen Methode, ob Ihre Aktivität auf dem Bildschirm angezeigt wird oder nicht.
Registrieren Sie Ihre Anwendungsklasse in manifest.xml
<application
android:name=".AppController" />
Um das Wetter zu überprüfen, ist die Aktivität Vordergrund oder Hintergrund gemäß der obigen Lösung. Rufen Sie die folgende Methode an den Stellen auf, die Sie überprüfen müssen
AppController applicationControl = (AppController) getApplicationContext();
if(applicationControl.isActivityInForeground()){
Log.d("TAG","Activity is in foreground")
}
else
{
Log.d("TAG","Activity is in background")
}