본문 바로가기

Android

super(Context), super.onCreate : 예약어 super와 Context



C만 주로 하고 예전에 Java를 잠깐하고 거의 안쓰다가 무작정 Android 하려니까 이것저것 막히는 부분이 많다.

역시 기초없이 하기란 힘들구나 +_+;;;


예약어 super 에 대해 알아본다.


예약어 super의 형태


  super.객체변수  하위 클래스에 의해 가려진 상위 클래스의 멤버변수나 메소드 접근 
  super.메소드이름(매개변수)  상위 클래스의 생성자를 호출하기 위해 사용 


  super(매개변수)

 상위클래스의 생성자를 호출 



오버라이딩

이전에 메소드의 상속과 오버라이딩(Overriding)에 개념이 잡혀야 한다.


오버로딩과 오버라이딩 : 객체지향 언어의 주요 개념은 다형성을 제공하기 위함이 가장 크다.


안드로이드에서 @Overriding 으로 사용

 : 상속관계에 있는 상위 클래스와 하위 클래스에서 같은 이름의 메소드를 정의하여 다형성을 지원한다.




super.onCreate(savedInstanceState) 는?


Activity가 실행될때(생성) 부분이다. 

이 메서드는 구현 해야 한다. 시스템 활동을 만들 때에 호출 한다. 개발자가 자신의 구현하는 Activity 의 필수 구성 요소를 초기화 하는곳으로 주로  쓰인다. 

 가장 중요 한 것은, 이것은 활동의 사용자 인터페이스에 대 한 레이아웃을 정의 하는 Setcontentview()를 호출 해야 한다는 것이다.


View를 만들때나 데이터를 바인드할때 등등 활동이 만들어진다.
saveInstanceState 라는 이전상태를 포함하는 번들 개체가 전달되는데 
이게 걸리면 onStart() 에 이어진다.

Activity 클래스 내부를 보면 onCreate에서 기본적인 액티비티가 만들어지는 코드가 있다.

 protected void onCreate(Bundle savedInstanceState) {

        if (mLastNonConfigurationInstances != null) {

            mAllLoaderManagers = mLastNonConfigurationInstances.loaders;

        }

        if (savedInstanceState != null) {

            Parcelable p = savedInstanceState.getParcelable(FRAGMENTS_TAG);

            mFragments.restoreAllState(p, mLastNonConfigurationInstances != null

                    ? mLastNonConfigurationInstances.fragments : null);

        }

        mFragments.dispatchCreate();

        getApplication().dispatchActivityCreated(this, savedInstanceState);

        mCalled = true;

    }


그냥 onCreate()를 오버라이드해서 쓰게되면 onCreate()를 텅텅빈 상태로 만들게  되는데 

super.onCreate()로 액티비티를 만드는 기본적인 코드를 실행한다.

그리고 이제 새로만들 액티비티가 만들어질때 해야될 일을 기록한다.