2011-12-11 7 views
0

저는 버튼 누름으로 다른 활동을 호출하는 주요 활동이있는 앱을 보유하고 있습니다.Android onSaveInstanceState 및 하위 활동 시작.

주 활동은 많은 양의 데이터를 포함하고 분류 할 수있는 클래스를 호스트합니다. 데이터는 애플리케이션의 백본이며 오리엔테이션 변경을 통해 데이터를 저장해야합니다. 이를 위해 onSaveInstanceState를 사용하고 parcelable 객체를 번들에 넣습니다.

그러나 onSaveInstanceState가 호출 될 때마다 단추를 누르고 오리엔테이션 변경뿐만 아니라 새로운 활동 중 하나를 시작한다는 사실을 알았습니다. 이렇게하면 다른 화면으로의 전환 속도가 약간 느려집니다.

정기적으로 활동에서 벗어날 때마다 활동이 파기된다는 것을 알고있을 때만이 정보를 저장하는 좋은 방법이 있습니까? 나는 주 활동에서 빠져 나오는 순간에 파괴 될 가능성이 있음을 이해한다.

감사합니다, 원시 값에 대한 M <

+0

당신이 활동이 파괴되기 전에 응용 프로그램 상태를 저장하는 더 좋은 방법을 알고 싶어? 가능하다면 –

+0

. 나는 다른 간단한 활동이 호출되는 동안 활동이 백그라운드로 들어갈 때 saveInstancestate를 호출하지 않는 방법을 찾고있다. – mAndroid

답변

0

, 당신은 onSaveInstanceState를 사용해야합니다. 복원을 위해 당신은 onRestoreInstanceState를 사용하거나 할 수 있습니다 할 수있는이 같은 onCreate에서 일부 코드 : 그들이 만들 비싸지 않다과 다시 만들 부진하여 UI를하지 않을 경우 Bitmap 등 같은 큰 오브젝트를 복원 이제

if(savedInstanceState != null) { 
    // restore old state 
} else { 
    // a fresh start 
} 

복원시. 당신이하지 않으려는 경우 onRetainNonConfigurationInstance을 사용하고 코드는 다음과 같이 표시됩니다

@Override 
public Object onRetainNonConfigurationInstance() { 
    return bmp; 
} 

@Override 
public void onCreate() { 

    bmp = (Bitmap)getLastNonConfigurationInstance(); 
} 

경고 :이 API는 더 이상 사용, 당신은 오래된 플랫폼에서 사용할 수 있습니다. 여기에 삽화를 위해 넣었습니다. 이를 수행하는 새로운 방법은 더 복잡합니다. 새로운 API 레벨 11 이상에 대한

getLastNonConfigurationInstance

onRetainNonConfigurationInstance

권장 SOLN : 여기

자세한 심판이다

"대신에 새로운 조각의 API의 setRetainInstance (부울)를 사용하여 이것은 이전 버전의 플랫폼에서도 Android 호환성 패키지를 통해 사용할 수 있습니다. " 위 링크를 클릭하면 문서에서 발췌 문장을 볼 수 있습니다.

따라서 비트 맵을 조각 안에 만들고 조각에 setRetainInstance을 호출하면 조각과 해당 내용 (사례 비트 맵)이 구성 변경 사항 전체에 유지됩니다.

참조 :

setRetainInstance

+0

안녕하세요, 답변 해 주셔서 감사합니다. 내가해야 할 일은 onRetainNonConfigurationInstance와 비슷한 것입니다 - 비추천 접근법은 무엇입니까? – mAndroid

관련 문제