3

방향 이벤트 발생 상태는 어떻게 처리합니까? 같은방향 변경 핸들 상태

뭔가 :

  • 발생 (애니메이션 목적)이 일어날 후
  • (일부 화면 상태 저장) 시작하기 전에

내가 아는 (화면 상태를로드) 그 onConfigurationChanged 방향 변경을 처리 할 수 ​​있습니다. 그리고 이것을 시도했습니다 :

public void onConfigurationChanged(Configuration cfg) { 
     saveState(); 

     super.onConfigurationChanged(cfg); 

     loadState(); 
    } 

saveState에서 lastIndex를 SharedPreferences의 Gallery에 저장하여 저장합니다. loadState에서 SharedPreferences에서 lastIndex를 가져 와서 갤러리의 최신 버전으로 만듭니다.

또한 loadState를 onResume 메서드에 넣었지만 방향 변경이 발생한 후에는 호출되지 않았습니다.

답변

4

(저장 일부 화면 상태)

사용 onSaveInstanceState() 및/또는 onRetainNonConfigurationInstance() (애니메이션 목적) 발생 때 setRetainInstance(true)

을 불렀다있는 및/또는 단편

OS에서 처리합니다.

이 일어날 후

사용 onRestoreInstanceState() 및/또는 getLastNonConfigurationInstance()가 (당신이 조각의 길을 간다면, 데이터가 자연스럽게 여전히 존재)

I를 (화면 상태를로드) onConfigurationChanged가 방향 변경을 처리 할 수 ​​있다는 것을 알고 있어야합니다.

@EightEight's answer이 이에 해당합니다.

3

조금 혼란 스러울 수도 있습니다.

api docs에서입니다 :

공공 무효가 활동이 실행되는 장치 구성 변경하면서 때 시스템에 의해 호출 (구성 newConfig)을의 onConfigurationChanged. 매니페스트의 configChanges 속성을 사용하여 처리하려는 구성을 선택한 경우에만이 옵션이 호출됩니다.

AndroidManifest에서 매개 변수를 지정한 경우 시스템은 onConfigurationChanged()를 호출하여 방향 변경을 알립니다. 깃발을 세우지 않으면 안드로이드가 당신의 활동을 죽일 것이고, 적절한 방향으로 새로운 것을 시작한 다음 onResume()으로 전화하십시오.

활동 완료가 변경되어 모든 레이아웃이 완료되었을 때 알림을 받으려면 하위보기 중 하나에서 onDraw() 메소드를 재정의하는 것이 좋습니다. 그때까지 모든 것이 완료되고 예를 들어 방향 변경 이전 상태를 복원 할 수 있습니다.

HTH. 시작하기 전에