Этого можно добиться эффективным способом, используя Application.ActivityLifecycleCallbacks.
Например, возьмем имя класса Activity, поскольку ProfileActivity позволяет определить , находится ли он на переднем или в заднем плане.
сначала нам нужно создать наш класс приложения, расширив Application Class
который реализует
Application.ActivityLifecycleCallbacks
Давайте будем моим классом приложения следующим образом
Класс приложения
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;
}
}
в приведенном выше классе есть метод переопределения onActivityResumed для 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;
}
где можно найти все экземпляры активности, которые в настоящее время отображаются на экране, просто проверьте, отображается ли ваша активность на экране, указанным выше методом.
Зарегистрируйте свой класс приложения в manifest.xml
<application
android:name=".AppController" />
Чтобы проверить, активна ли погода на переднем плане или в фоновом режиме, в соответствии с приведенным выше решением, вызовите следующий метод в местах, которые вам нужно проверить
AppController applicationControl = (AppController) getApplicationContext();
if(applicationControl.isActivityInForeground()){
Log.d("TAG","Activity is in foreground")
}
else
{
Log.d("TAG","Activity is in background")
}