Android Study

현재 액티비티가 보여지고 있는것인지 확인하는 Activity 함수

85chong 2019. 12. 18. 09:25
728x90
반응형
SMALL

단순한 Activitlifecycle 응용방법으로는 onPause( ) , onResume( ) 방법이 있다.

앱이 백그라운드 상태 일때 onPause( ) 가 호출되고, 다시 포그라운드 상태일때 onResume( ) 이 호출된다. 

하지만 이는 액티비티가 종료되고, 다른 액티비티가 실행될때에도 실행되는 함수들이기 때문에 꼬이는 경우가 있을수도 있다. 그래서 찾아낸것은 onWindowFocusChanged( ) 함수이다. 백그라운드 상태를 체크한다기보단, 좀 더 정확하게

"(onWindowFocusChasnged( )를 가지고있는) Activity 가 최상단 인지 체크한다고 보면된다." 

함수 그대로 지금의 윈도우가 Focus 되고있나 를 체크하는 함수이다. 

코드는 아래와 같다.

 

public class MainActivity extends Activity { 
  
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
    } 
      
    @Override 
    public void onWindowFocusChanged(boolean hasFocus) { 
        super.onWindowFocusChanged(hasFocus); 
			// hasFocus == true : 포그라운드 상태 
			// hasFocus == false : 백그라운드 상태 
        } 
    } 
}

 

 

위의 코드를 넣어 확인해보면 알겠지만, 위의 클래스를 띄우고 있다가, "클래스가 가려지거나 ,사라지거나 할때 onWindowFocusChanged( ) 가 호출이 되면서 동시에 hasFocus 에 false 가 들어오게 된다." 이를 활용하면 많은 도움이 될거라 생각함. 

 

- 끝 -