2012-02-24 5 views
0

휴대 전화가 잠자기 상태이거나 내 앱에서 텍스트를 보내거나 전화를 걸면 앱이 다시 시작됩니다. 이 문제를 어떻게 방지합니까?휴대 전화가 잠자기 때마다 Android 앱이 재설정되지 않도록하려면 어떻게해야합니까?

기본 데이터 형식 대신 개체를 저장하고 싶습니다. 필요한 경우이 작업을 수행 할 준비가되었지만 앱이 닫히거나 전화가 꺼지면 앱의 현재 상태/데이터를 저장할 필요가 없습니다.

+0

이 질문은 유용합니다. http://stackoverflow.com/q/151777/957245 – Deco

답변

0

재정이 방법 :

더 여기에 자세히 설명되어 있습니다.

if (getLastNonConfigurationInstance() != null) 
    { 
     table = (Table)getLastNonConfigurationInstance(); 

휴대 전화가 메모리를 절약하기 위해 앱을 종료하거나 휴대 전화가 잠자기 상태 인 경우 객체를 저장합니다. 개체를 뒤로/닫아도 저장되지 않습니다. 대신 사용자가 홈 버튼을 누르거나 다시 버튼을 눌러 onBackPressed()를 사용하지 않거나 SQL을 사용하여 객체 내에 데이터를 영구 저장 할 수 있습니다.

1

onSaveInstanceState(Bundle outState)이 호출되면 주 활동에 임시 상태 변수를 저장해야합니다. 이것은 앱이 OS에 의해 파괴 될 가능성이있을 때마다 호출됩니다. onCreate(Bundle savedInstanceState)에서 savedInstanceState이 null이 아닌 경우 활동이 이전에 종료되었으며 해당 번들에서 임시 상태 변수를 다시 채워야 함을 의미합니다.

주 활동이 종료 된 후 다시 시작될 때 onCreate가 다시 호출 되기는하지만 앱이 일시 중지 될 때까지 상태를 다시 생성하기 위해 데이터를로드하지 않는 것이므로 주 활동이 "다시 시작"하는 이유입니다. 개체

@Override 
public Object onRetainNonConfigurationInstance() 
{ 
    if (myObject != null) // Check that the object exists 
     return(myObject); 
    return super.onRetainNonConfigurationInstance(); 
} 

를 사용하여 개체를 다시로드하도록에서 onCreate() 메소드 내에서이 코드를 저장 http://developer.android.com/reference/android/app/Activity.html

+0

어쨌든 onSaveInstanceState를 사용하여 개체를 저장할 수 있습니까? – Deco

관련 문제