이것은 Application.ActivityLifecycleCallbacks 를 사용하여 효율적인 방법으로이를 달성 할 수 있습니다.
예를 들어 Activity 클래스 이름을 ProfileActivity로 사용하면 전경 또는 배경인지 확인할 수 있습니다.
우리는 먼저 확장하여 우리의 응용 프로그램 클래스를 만드는 데 필요한 응용 프로그램 클래스
구현하는
Application.ActivityLifecycleCallbacks
다음과 같이 내 Application 클래스가 될 수 있습니다.
애플리케이션 클래스
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;
}
}
위 클래스의 재정의 methord이 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;
}
현재 화면에 표시된 모든 활동 인스턴스를 찾을 수있는 곳에서 위의 방법으로 Your Activity가 화면에 있는지 확인하십시오.
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")
}