2016-11-01 4 views
1

활동의 라이프 사이클에서 항상 부모 클래스의 메소드를 호출해야합니까? 무슨 뜻입니까?Android 활동의 필수 호출 수퍼 클래스 메소드는 무엇입니까?

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main);  
} 

public void onStart() { 
    super.onStart(); 

} 



protected void onResume() { 
    super.onResume(); 

} 

protected void onPause() { 
    super.onPause(); 


} 



protected void onStop() { 
    super.onStop(); 

} 

protected void onDestroy() { 
    super.onDestroy(); 

} 

protected void onRestart() { 
    super.onRestart(); 

} 


public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 

} 


public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 

} 

그리고 항상 수퍼 클래스 메서드를 먼저 호출해야합니까? 처음과 후 superclasss의 방법과 opossite onRestoreInstanceState 방법에 내 코드를 작성하는 더 의미가있다 onSaveInstanceState 방법에

public void onSaveInstanceState(Bundle outState) { 
    .....my code....... 
    super.onSaveInstanceState(outState); 

} 


public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    .......my code...... 

} 

: 예를 들면? super.onXXX()를 호출하는 것은 필요하거나하지 않은 경우

덕분에 수명주기 방법에 대한

+0

[가능한 경우 Android에서 수퍼를 호출해야하는 이유가 무엇입니까?] (http://stackoverflow.com/questions/10843383/why-do-we-have-to-call-super-in-android- 때때로) – Real73

답변

2

설명서를 나타냅니다. 일부 메소드의 경우 이것이 필요합니다. 일부 메소드의 경우 그렇지 않습니다.

super.onXXX()을 호출해야하는 라이프 사이클 메소드의 경우 언제든지 해당 메소드를 호출 할 수 있습니다. 코드 전후에있을 수 있습니다.

onSaveInstanceState()onRestoreInstanceState()의 경우 코드 전후에 super.onXXX()에 전화를 거는 경우에도 아무런 차이가 없어야합니다. 다행히도, 저장된 인스턴스 Bundle에 넣은 내용은 안드로이드 프레임 워크가 넣는 내용과 충돌하지 않습니다. Bundle. 충돌하는 경우 코드 전후에 super 호출 여부에 관계없이 문제가 발생합니다.

참고 : 저장된 예를 Bundle에서보기 및 대화의 정보를 넣어 때 안드로이드 프레임 워크는 다음 키를 사용하므로 한 같은 이름의 키를 사용하지 않는

static final String FRAGMENTS_TAG = "android:fragments"; 
private static final String WINDOW_HIERARCHY_TAG = "android:viewHierarchyState"; 
private static final String SAVED_DIALOG_IDS_KEY = "android:savedDialogIds"; 
private static final String SAVED_DIALOGS_TAG = "android:savedDialogs"; 
private static final String SAVED_DIALOG_KEY_PREFIX = "android:dialog_"; 
private static final String SAVED_DIALOG_ARGS_KEY_PREFIX = "android:dialog_args_"; 

, 당신은해야한다 좋은.