Bu, Application.ActivityLifecycleCallbacks kullanarak verimli bir şekilde bunu başarabilir.
Örneğin, ProfileActivity olarak Activity sınıf adını alalım , ön planda mı yoksa arka planda mı olduğunu bulalım
İlk başta uzatarak bizim uygulama sınıfı oluşturmak gerekir Uygulama Class
hangi uygular
Application.ActivityLifecycleCallbacks
Uygulama sınıfım aşağıdaki gibi olalım
Uygulama sınıfı
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;
}
}
Yukarıdaki sınıftaki bir geçersiz kılma methord vardır onActivityResumed arasında 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;
}
o anda ekranda görüntülenen tüm aktivite vakalarının bulunabileceği yerlerde, yukarıdaki yöntemle Aktivitenizin Ekranda olup olmadığını kontrol edin.
Uygulama sınıfınızı manifest.xml'de kaydedin
<application
android:name=".AppController" />
Hava durumunu kontrol etmek için Aktivite Ön Plandadır veya yukarıdaki çözüme göre arka plandadır, kontrol etmeniz gereken yerlerde aşağıdaki yöntemi arayın
AppController applicationControl = (AppController) getApplicationContext();
if(applicationControl.isActivityInForeground()){
Log.d("TAG","Activity is in foreground")
}
else
{
Log.d("TAG","Activity is in background")
}