Цього можна досягти ефективним шляхом, використовуючи Application.ActivityLifecycleCallbacks
Наприклад, давайте взяти ім’я класу Activity як ProfileActivity дозволяє виявити, чи знаходиться він на передньому плані чи на задньому плані
спершу нам потрібно створити наш клас додатків, розширивши Application Application
який реалізує
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 of 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")
}